Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当用户输入0时,如何请求多个输入并停止?_Java_Loops_Input - Fatal编程技术网

Java 当用户输入0时,如何请求多个输入并停止?

Java 当用户输入0时,如何请求多个输入并停止?,java,loops,input,Java,Loops,Input,我的程序应该收到大量的钱,并将其转换为零钱,但当它收到0时,它应该停止请求输入并停止程序 我的数学都算对了,我只是在重复询问数字时遇到了问题。以下是我目前的情况: public class Coins { public static int quarters; public static int dimes; public static int nickels; public static int pennies; public static int Quarters(int

我的程序应该收到大量的钱,并将其转换为零钱,但当它收到
0
时,它应该停止请求输入并停止程序

我的数学都算对了,我只是在重复询问数字时遇到了问题。以下是我目前的情况:

public class Coins {

    public static int quarters;
public static int dimes;
public static int nickels;
public static int pennies;

    public static int Quarters(int TotalCoins) {
        quarters = (int) (TotalCoins / 25);
        TotalCoins %= 25;
        return quarters;
    }
    public static int Dimes(int TotalCoins){
        TotalCoins -= (quarters * 25);
        dimes = (int) (TotalCoins / 10);
        TotalCoins %= 10;
        return dimes;
}
    public static int Nickels(int TotalCoins){
        TotalCoins -= (dimes * 10) + (quarters * 25);
        nickels = (int) (TotalCoins / 5);
        TotalCoins %= 5;
        return nickels;
    }
    public static int Pennies(int TotalCoins){
        TotalCoins -= (nickels * 5 ) + (dimes * 10 ) + (quarters * 25);
        pennies = (int) (TotalCoins / 1);
        TotalCoins %= 1;
        return pennies;
    }
}
这是我的tester类(我很确定我的主要问题是):

任何帮助都会很好

编辑:有人告诉我,在一节课上完成整件事可能更容易,如果是这样的话,任何这样做的建议都会很好。谢谢你

编辑:我忘了提到我应该能够输入所有数字,然后显示所有数字的输出

把它改成这样

 int changeMoney=0;
 while ( (changeMoney =kybd.nextInt()) != 0){           
     System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " + Coins.Pennies(changeMoney));    
 }

在@Bohemian的回答中:伟大的代码。我的错是忘了提及(对此表示歉意)我 如果能够一次输入所有输入的数字,我该怎么办 你会这么说吗

将输入存储在一个集合中,如
列表

代码示例:

List<Integer> list = new ArrayList<>();          
while ( (int i =kybd.nextInt()) != 0){           
     list.add(i);
}
// Then loop again
for(Integer changeMoney : list){
     System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " +      Coins.Pennies(changeMoney)); 
}
List List=new ArrayList();
而((int i=kybd.nextInt())!=0){
列表.添加(i);
}
//然后再次循环
for(整数兑换货币:列表){
System.out.println(“Quarter=“+Coins.Quarter(兑换货币)+”\nTimes=“+Coins.Dimes(兑换货币)+”\nNickels=“+Coins.Nickels(兑换货币)+”\nPennies=“+Coins.Pennies(兑换货币));
}

将其更改为类似的内容

 int changeMoney=0;
 while ( (changeMoney =kybd.nextInt()) != 0){           
     System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " + Coins.Pennies(changeMoney));    
 }

在@Bohemian的回答中:伟大的代码。我的错是忘了提及(对此表示歉意)我 如果能够一次输入所有输入的数字,我该怎么办 你会这么说吗

将输入存储在一个集合中,如
列表

代码示例:

List<Integer> list = new ArrayList<>();          
while ( (int i =kybd.nextInt()) != 0){           
     list.add(i);
}
// Then loop again
for(Integer changeMoney : list){
     System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " +      Coins.Pennies(changeMoney)); 
}
List List=new ArrayList();
而((int i=kybd.nextInt())!=0){
列表.添加(i);
}
//然后再次循环
for(整数兑换货币:列表){
System.out.println(“Quarter=“+Coins.Quarter(兑换货币)+”\nTimes=“+Coins.Dimes(兑换货币)+”\nNickels=“+Coins.Nickels(兑换货币)+”\nPennies=“+Coins.Pennies(兑换货币));
}

您想要这样的东西:

Scanner kybd = new Scanner(System.in);

while (true) { 
    int changeMoney = kybd.nextInt();
    if (changeMoney == 0)
        break;

    // do stuff with changeMoney
}
它也可以表示为
for
循环:

Scanner kybd = new Scanner(System.in);
for (int changeMoney = kybd.nextInt(); changeMoney != 0; changeMoney = kybd.nextInt()) {
    // do stuff with changeMoney 
}
虽然行数较少,但它使for循环行相当长,但可以通过使用较短的变量名来缓解这一问题:

Scanner in = new Scanner(System.in);
for (int i = in.nextInt(); i != 0; i = in.nextInt()) {
    // do stuff with i
}

你想要这样的东西:

Scanner kybd = new Scanner(System.in);

while (true) { 
    int changeMoney = kybd.nextInt();
    if (changeMoney == 0)
        break;

    // do stuff with changeMoney
}
它也可以表示为
for
循环:

Scanner kybd = new Scanner(System.in);
for (int changeMoney = kybd.nextInt(); changeMoney != 0; changeMoney = kybd.nextInt()) {
    // do stuff with changeMoney 
}
虽然行数较少,但它使for循环行相当长,但可以通过使用较短的变量名来缓解这一问题:

Scanner in = new Scanner(System.in);
for (int i = in.nextInt(); i != 0; i = in.nextInt()) {
    // do stuff with i
}

首先,您的方法应该有小写的名称。第二,你需要一个循环——也许像这样

public static void main(String[] args) {
  Scanner kybd = new Scanner(System.in);

  while (kybd.hasNextInt()){ // will stop if the next input is not an int.
    int changeMoney = kybd.nextInt();
    if (changeMoney == 0) {
      break;
    }
    // Assuming you just rename them to "get" methods.
    System.out.println("Quarters = "
        + Coins.getQuarters(changeMoney) + "\nDimes = "
        + Coins.getDimes(changeMoney) + "\nNickels = "
        + Coins.getNickels(changeMoney)
        + "\nPennies = "
        + Coins.getPennies(changeMoney));
  }
}

首先,您的方法应该有小写的名称。第二,你需要一个循环——也许像这样

public static void main(String[] args) {
  Scanner kybd = new Scanner(System.in);

  while (kybd.hasNextInt()){ // will stop if the next input is not an int.
    int changeMoney = kybd.nextInt();
    if (changeMoney == 0) {
      break;
    }
    // Assuming you just rename them to "get" methods.
    System.out.println("Quarters = "
        + Coins.getQuarters(changeMoney) + "\nDimes = "
        + Coins.getDimes(changeMoney) + "\nNickels = "
        + Coins.getNickels(changeMoney)
        + "\nPennies = "
        + Coins.getPennies(changeMoney));
  }
}

您向用户询问了两次号码

  • 一旦进入状态
  • if
    语句中的第二个
另外,如果您想让用户再次写入另一个数字,那么您的
if
似乎应该替换为loop。在这种情况下,您可以使用

Scanner kybd = new Scanner(System.in);
for (int changeMoney = -1; (changeMoney = kybd.nextInt()) != 0;){
    System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " + Coins.Pennies(changeMoney));
}

这种方法的优点是它很短,
changeMoney
将是仅在循环内部可用的局部变量。

您向用户询问了两次数字

  • 一旦进入状态
  • if
    语句中的第二个
另外,如果您想让用户再次写入另一个数字,那么您的
if
似乎应该替换为loop。在这种情况下,您可以使用

Scanner kybd = new Scanner(System.in);
for (int changeMoney = -1; (changeMoney = kybd.nextInt()) != 0;){
    System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " + Coins.Pennies(changeMoney));
}

这种方法的优点是它很短,
changeMoney
将是局部变量,仅在循环中可用。

看起来您只读取了一次,您可能应该将scanner.nextInt()调用包装在while循环中,如果值为0,该循环将中断

while (kybd.hasNextInt()){
   int changeMoney = kybd.nextInt();
   if(changeMoney == 0)break;

   System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " + Coins.Pennies(changeMoney));

} 

看起来您只读取了一次,您可能应该将scanner.nextInt()调用包装在while循环中,如果值为0,则该循环将中断

while (kybd.hasNextInt()){
   int changeMoney = kybd.nextInt();
   if(changeMoney == 0)break;

   System.out.println("Quarters = " + Coins.Quarters(changeMoney) + "\nDimes = " + Coins.Dimes(changeMoney) + "\nNickels = " + Coins.Nickels(changeMoney) + "\nPennies = " + Coins.Pennies(changeMoney));

} 

+1个不错的建议,我喜欢答案中的3种不同方式:)+1个不错的建议,我喜欢答案中的3种不同方式:)很棒的代码。我的错是忘了提及(很抱歉)我应该能够一次输入所有的输入数字,你会说我该怎么做?在while循环中创建一个收集多个输入的循环,然后使用所有的输入。如果其中一个输入为零,则可以break@SplattColor我编辑我的答案,寻找可能的解决方案,将输入存储在
列表中
伟大的代码中。我的错是忘了提及(很抱歉)我应该能够一次输入所有的输入数字,你会说我该怎么做?在while循环中创建一个收集多个输入的循环,然后使用所有的输入。如果其中一个输入为零,则可以break@SplattColor我编辑了我的答案,寻找一种可能的解决方案,将输入存储在
列表中
+1干
nextInt()
,这是一种很好的串联功夫,但有些人认为这样分配和测试很糟糕。@Bohemian谢谢。修正了一点:)@Bohemian该死。现在我意识到这和你的答案是一样的+1给你,我会回到我以前的版本。+1干
nextInt()
的功夫不错,但有些人认为这样分配和测试很糟糕。@Bohemian谢谢。修正了一点:)@Bohemian该死。现在我意识到这和你的答案是一样的+1,并将返回到我以前的版本。@SplattColor+1是您实际向上投票的答案xD。。考虑接受一个答案来完成这个问题,并投票赞成谁实际上你认为答案有助于解决你的问题:)@ StuttToC+ + 1是当你实际上投票赞成答案XD。考虑接受一个答案来完成这个问题,并投票选出你认为对解决问题有帮助的人: