Java新手问问题!请用for循环,while以及do while循环帮我写一个点餐系统,只需要写出消费多少元就行!public class Test {
public static void main(String[] args) {
System.out.println("请问您需要消费多少钱?");
Scanner scan=new Scanner(System.in);
double sum=0d;
double money=scan.nextDouble();
sum =money;
System.out.println("本次消费:" money "元");
System.out.println("请问您是否需要继续消费?(输入1 , 表示继续消费)");
int isContinue=scan.nextInt();
while(true){
if(isContinue==1){
System.out.println("请问您需要消费多少钱?");
money=scan.nextDouble();
sum =money;
System.out.println("本次消费:" money "元");
System.out.println("请问您是否需要继续消费?(输入1,表示继续消费)");
isContinue=scan.nextInt();
}else{
System.out.println("本次消费结束");
System.out.println("总共消费:" sum "元");
break;
}
}
}
}
JAVA怎么编多个生产者多个消费者代码啊public class ProduceConsumerDemo {
public static void main(String[] args) {
// 1.创建资源
Resource resource = new Resource();
// 2.创建两个任务
Producer producer = new Producer(resource);
Consumer consumer = new Consumer(resource);
// 3.创建线程
/*
* 多生产多消费产生的问题:重复生产、重复消费
*/
Thread thread0 = new Thread(producer);
Thread thread1 = new Thread(producer);
thread0.setName("生产者(NO0)");
thread1.setName("生产者(NO1)");
Thread thread2 = new Thread(consumer);
Thread thread3 = new Thread(consumer);
thread2.setName("消费者(NO2)");
thread3.setName("消费者(NO3)");
thread0.start();
thread1.start();
thread2.start();
thread3.start();
}
}
class Resource {
private String name;
private int count = 1;
// 定义标记
private boolean flag;
// 提供给商品赋值的方法
public synchronized void setName(String name) {// thread0, thread1在这里运行
while (flag)// 判断标记为truejava消费单代码 , 执行wait等待,为false则生产
/*
* 这里使用while,而不使用if的理由如下java消费单代码:
*
* thread0有可能第二次也抢到锁的执行权,判断为真,则有面包不生产,所以接下来执行等待,此时thread0在线程池中 。
* 接下来活的线程有3个(除java消费单代码了thread0),这三个线程都有可能获取到执行权.
* 假设thread1获得了执行权,判断为真,则有面包不生产,执行等待 。此时thread1又进入到了线程池中 。
* 接下来有两个活的线程thread2和thread3 。假设thread2又抢到了执行权,所以程序转到了消费get处……
*/
try {
this.wait();//这里wait语句必须包含在try/catch块中,抛出异常 。
} catch (InterruptedException e) {
e.printStackTrace();
}
this.name = namecount;// 第一个面包
count;// 2
System.out.println(Thread.currentThread().getName()this.name);// thread0线程生产了面包1
// 生产完毕 , 将标记改成true.
flag = true;// thread0第一次生产完面包以后,将标记改为真,表示有面包了
// 唤醒消费者(这里使用notifyAll而不使用notify的原因在下面)
this.notifyAll();// 第一次在这里是空唤醒,没有意义
}
/*
* 通过同步,解决了没生产就消费的问题
* 生产完以后 , 生产者释放了this锁 , 此时,生产者和消费者同时去抢锁,又是生产者抢到了锁,所以就出现了一直生产的情况 。
* 与“生产一个就消费一个的需求不符合” 等待唤醒机制 wait();该方法可以使线程处于冻结状态,并将线程临时存储到线程池
* notify();唤醒指定线程池中的任意一个线程 。notifyAll();唤醒指定线程池中的所有线程
* 这些方法必须使用在同步函数中 , 因为java消费单代码他们用来操作同步锁上的线程上的状态的 。
* 在使用这些方法时候,必须标识他们所属于的锁,标识方式就是锁对象.wait(); 锁对象.notify(); 锁对象.notifyAll();
* 相同锁的notify()可以获取相同锁的wait();
*/
【java消费单代码 java商场购物清单代码】 public synchronized void getName() {// thread2,thread3在这里运行
while (!flag)
/*
* ……接着上面的程序执行分析 thread2拿到锁获取执行权之后,判断java消费单代码!flag为假,则不等待,直接消费面包1,输出一次.
* 消费完成之后将flag改为假 接下来又唤醒了thread0或者thread1生产者中的一个
* 假设又唤醒了thread0线程,现在活的线程有thread0,thread2,thread3三个线程
* 假设接下来thread2又抢到了执行权,判断!flag为真,没面包了,停止消费,所以thread2执行等待.
* 此时活着的线程有thread0和thread3 。
* 假设thread3得到了执行权 , 拿到锁之后进来执行等待,此时活着的线程只有thread0.
* 所以thread0只能抢到执行权之后,生产面包2,将标记改为true告诉消费者有面包可以消费了 。
* 接下来执行notify唤醒,此时唤醒休眠中的3个线程中的任何一个都有可能 。
* 如果唤醒了消费者thread2或者thread3中的任何一个,程序都是正常 。如果此时唤醒thread1则不正常 。
* 如果唤醒了thread1,此时活着的线程有thread0和thread1两个线程 。
* 假设thread0又获得了执行权,判读为真有面包,则又一次执行等待 。
* 接下来只有thread1线程有执行权(此时没有判断标记直接生产了,出错了),所以又生产了面包3 。在这个过程中,面包2没有被消费 。
* 这就是连续生产和消费容易出现的问题 。
*
* 原因:被唤醒的线程没有判断标记就开始执行了,导致了重复的生产和消费发生 。
*
* 解决:被唤醒的线程必须判断标记,使用while循环标记,而不使用if判断的理由 。
*
* 但是接下来会出现死锁,原因在于:
* 上面的程序中thread0在执行notify的时候唤醒了thread1 , 而此时thread2和thread3两个消费者线程都处于等待状态
* thread1在执行while判断语句之后判断为真,则执行等待,此时所有的线程都处于冻结等待状态了 。
*
* 原因:本方线程在执行唤醒的时候又一次唤醒了本方线程,而本方线程循环判断标记又继续等待,而导致所有的线程都等待 。
*
* 解决:本方线程唤醒对方线程,可以使用notifyAll()方法
*唤醒之后,既有本方 , 又有对方,但是本方线程判断标记之后,会继续等待 , 这样就有对方线程在执行 。
*/
try {
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()this.name);
// 将标记改为false
flag = false;
// 唤醒生产者
this.notify();
}
}
// 生产者
class Producer implements Runnable {
private Resource resource;
public Producer(Resource resource) {
this.resource = resource;
}
public void run() {
while (true) {
resource.setName("面包");
}
}
}
// 消费者
class Consumer implements Runnable {
private Resource resource;
public Consumer(Resource resource) {
this.resource = resource;
}
@Override
public void run() {
while (true) {
resource.getName();
}
}
}
用java写出消费清单代码后怎么出清单循环遍历到JSP页面上java消费单代码,如果纯控制台java消费单代码的话就直接循环遍历输出
编写java代码要求顾客输入购买多少斤当用户输入为10斤以内,则输出用户应支付金额?2、public class Test11 {
public static void main(String[] args) {
System.out.println("滞贸旅客的人数"(1189 - 108*10) );
}
}
3、public class Test11 {
public static void main(String[] args) {
try {
Scanner scanner = new Scanner(System.in);
System.out.print("输入购买鸡蛋(斤):");
int number =scanner.nextInt();
if(number10){
throw new RuntimeException("不允许购买这么多!");
}
else {
System.out.println("用户应支付金额" number*3.98);
}
}
catch (Exception e){
System.out.println(e.getMessage());
}
}
}
关于JAVA线程实例生产消费问题: private Ck xc=null; public Xf(Ck xc){ this.xc=xc; }其中这段代码不懂rl 相当于 一个生产者的仓库(消费者消费的时候会从这个仓库中拿东西);
wp 相当于库存数量,生产者生产一次 wp数量会+1, 消费者消费一次 wp数量会-1
开启线程:同步进行生产跟消费的动作 。(一个只生产,一个只消费)
两个方法(shengchanxiaofei) 是互相notify的,因为他们的wait对象都是 Ck,所以理论上不会存在wait后不释放的情况 。可以再完善一下,用 reentrantLock 或者自己写一个方法,比如在wait后几秒 如果还未被notify 强制notify 。
编写一个java消费单算出折扣怎么写如图没有理解你的问题,是想打印出图上的效果,还是说告诉我原价和折后价让我算折扣?
java消费单代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java商场购物清单代码、java消费单代码的信息别忘了在本站进行查找喔 。
推荐阅读
- go语言的切片源码,golang切片底层原理
- 起航者a1机箱怎么装显卡,启航者s5机箱走线教程
- linux文件时间命令,linux 文件 时间
- 怎么学习go语言 go语言自学
- redis5哨兵配置,redis配置哨兵模式集群
- 联众网络游戏大厅,联众游戏大厅手机
- 怎么在视频号直播间购物呢,视频号直播怎么添加购物车
- php安卓链接数据库 php连接数据库实例
- jquery获取显示与隐藏,jq显示隐藏div