1

我的课堂项目要求我用 Java 创建代码来找到最少数量的硬币。我得到了那部分。讲师要求我们让程序继续运行,直到有人输入零值作为输入。我已经完成了我的研究并研究了如何做到这一点,似乎创建一个 while 循环是实现我想要的结果的最简单方法。我看过几个关于它们的教程并了解它们是如何工作的,但每个人都说要创建一个

while (conditions)

但我不知道条件是什么或将会是什么。我可以让它在其他简单的程序中工作,例如计数器到 10 然后停止。但在我的情况下,我需要用户输入来停止循环并且无法弄清楚如何做到这一点。

我的代码是

import java.util.Scanner;

public class Coin {

    public static void main (String[] Args) {

        int quarters = 25;
        int dimes = 10;
        int nickles = 5;
        int pennies = 1;

        System.out.println("Enter in a number between 1-99");

        // "Input" Part of Code (Remember this and go back for reference)
        Scanner Userinput = new Scanner(System.in);

       int stuff = Userinput.nextInt();

       int q = stuff/quarters;
       stuff -= q*quarters;
       String A = "Number of Quarters:" +q;

       System.out.println(A);

       int d = stuff/dimes;
       stuff -= d*dimes;
       String B = "Number of Dimes:" +d;

       System.out.println(B);      

       int n = stuff/nickles;
       stuff -= n*nickles;
       String C = "Number of Nickles:" +n;

       System.out.println(C);       

       int p = stuff/pennies;
       stuff -= p*pennies;
       String D = "Number of Pennies:" +p;

       System.out.println(D);

       System.out.println("Thank you for Using My Program");
     } 

我假设 while 循环从一开始就开始,但我不确定要添加什么样的条件才能使其工作。

4

5 回答 5

1

您有几个选项,您可以在 while 条件中分配您的 stuff 变量并进行比较。这样,如果用户输入了 0,它将不会进入 while 循环。所以在你的情况下:

int stuff = 0;
while((stuff = Userinput.nextInt())!=0)
{
    int q = stuff/quarters;
    stuff -= q*quarters;
    String A = "Number of Quarters:" +q;


    System.out.println(A);


   int d = stuff/dimes;
   stuff -= d*dimes;
   String B = "Number of Dimes:" +d;

   System.out.println(B);


   int n = stuff/nickles;
   stuff -= n*nickles;
   String C = "Number of Nickles:" +n;

   System.out.println(C);


   int p = stuff/pennies;
   stuff -= p*pennies;
   String D = "Number of Pennies:" +p;

   System.out.println(D);
}
System.out.println("Thank you for Using My Program");

然后,您的 while 循环将继续迭代,直到用户输入 0(使东西 == 0)。

或者您可以在无限循环中检查用户输入,并使用“break”命令提前退出循环。有时编译器不允许你直接使用“true”。因此,将布尔值分配给 true 并改用它。

boolean alwaystrue = true;
while(alwaystrue)
{
    int stuff = Userinput.nextInt();
    if(stuff==0)
    {
        break;
    }
    ...
}
于 2013-11-07T02:04:58.347 回答
1

有几种不同的方法来处理这个问题。我个人首选的处理while循环的方式,这些循环旨在重复,直到用户输入某个值,以简单的开头while(true)。例如,假设您想在用户输入 1-99 范围之外的值时退出:

while(true) {

    System.out.println("Enter in a number between 1-99");
    Scanner Userinput = new Scanner(System.in);
    int stuff = Userinput.nextInt();

    if(stuff < 1 || stuff > 99) {
        break;  //break is a keyword that exits the loop when a condition is met.
    }

    //do all your other stuff

}

System.out.println("Thank you for Using My Program");

这当然不是唯一的方法,只是我个人对这种情况的首选方法。

于 2013-11-07T02:05:22.290 回答
0

条件就是任何布尔值(真或假)。在您的情况下,您希望重复您的代码,直到用户输入 0。所以一个好的条件是如果用户的输入为 0,我们不想再循环了。如果不给你作业的解决方案,我不确定我能描述多少。

于 2013-11-07T02:05:23.847 回答
0

条件语句是循环的停止条件

int i = 0;
while (i < 25) {  // this stops that loop once i has reached 25
    // do something
    i++;
}

在你的情况下,你想要

Scanner scanner = new Scanner(System.in);
while (input != 0) {  // loop stops when you get an input of 0
                      // in human language terms, while input does not equal 0, 
                      // do something. Or you could say, until input equlas 0,
                      // keep doing something
   // so somtheing
   input  =  scanner.nextInt();
}
于 2013-11-07T02:06:31.743 回答
0

您似乎对条件部分的内容感到困惑?在 Java 中,您需要有一个可以评估为真或假的表达式。每次条件被评估为真时,循环将继续执行。在您的情况下,您希望循环直到用户输入 0。

while(input != 0){
   /*Code goes here*/
}
于 2013-11-07T02:06:49.327 回答