【问题标题】:Creating a conditional statement to correspond with scanner input创建与扫描仪输入相对应的条件语句
【发布时间】:2023-03-05 06:02:01
【问题描述】:

我正在为课堂开发一个程序。

我需要使用扫描器类读取用户的输入。 然后,我需要使用 while 循环将这些数据传递给数组列表。 在我的 while 循环中,我需要一个条件语句来检查输入的是 0 还是负数。
如果用户输入负数或 0,则循环结束,代码进入下一个进程...

我目前面临的问题是:

-我的所有输入值都没有被处理

-我必须输入值0 3次才能退出循环

-0 正在传递给我不想要的数组列表

到目前为止,这是我的代码:

import java.util.*; 
public class questionAvg3
{
public static void main(String[]args)
{

Scanner input_into = new Scanner(System.in);
ArrayList<Integer> collector = new ArrayList<Integer>();
System.out.println("Enter 0 or a negative number to end input");
System.out.println("Enter a positive integer to populate the arraylist");


    while ((input_into.nextInt() !=0) || (input_into.nextInt() < 0)){
    System.out.println("Type another int or exit");
        collector.add(input_into.nextInt());
    }

    int minValue = collector.get(0);
    int maxValue = collector.get(0); 
    //int avgValue = collector.get(0);
    //int total = 0;
    for(Integer i: collector){
        if( i < minValue) minValue = i;
        if( i > maxValue) maxValue = i;
    }       
    System.out.println("The max value int is: " + maxValue);
    System.out.println("The min value int is: " + minValue);

}
}

【问题讨论】:

    标签: java arrays conditional


    【解决方案1】:
    while ((input_into.nextInt() !=0) || (input_into.nextInt() < 0)){
        System.out.println("Type another int or exit");
            collector.add(input_into.nextInt());
        }
    

    这确实需要 3 个整数才能传递。因为nextInt 总是寻找下一个输入值。

    你需要的是

    int input = input_into.nextInt();
      while ((input !=0) || (input < 0)){
            System.out.println("Type another int or exit");
                collector.add(input);
                input = input_into.nextInt();
            }
    

    【讨论】:

    • 这会创建一个无限循环。您应该在 while 循环结束时更新您的 input
    • 我已经实现了这个,但我现在陷入了打印“键入另一个 int 或退出”的无限循环中
    • @AnthonyJ 只需将 input = input_into.nextInt(); 添加到您的 while 循环末尾即可。
    • @sᴜʀᴇsʜᴀᴛᴛᴀ 糟糕,我没有得到代表。 :p
    【解决方案2】:

    你的问题就在这里:

    while ((input_into.nextInt() !=0) || (input_into.nextInt() < 0)){
    System.out.println("Type another int or exit");
        collector.add(input_into.nextInt());
    }
    

    你必须输入3次0的原因是因为你调用了input_into.nextInt() 3次!

    这意味着您的程序正在等待一个整数,根据您的比较评估输入,然后再次执行此操作,最后一次为您的collector.add()

    我认为了解如何更好地使用比较运算符对您很重要。

    例如,当您说(input_into.nextInt() !=0) || (input_into.nextInt() &lt; 0) 时,您实际上是在说数字小于零或大于零。 由于您的标记值是

        int input = input_into.nextint();
        while (input > 0){
           System.out.println("Type another int or exit");
           collector.add(input);
           input = input_into.nextint();
        }
    

    【讨论】:

    • 完美,谢谢。为了帮助我更好地理解和解决我的问题。
    • @AnthonyJ 我鼓励您将循环更改为我上面的内容,它更容易阅读并且实际上性能更好,因为与初始循环设置相比,每次迭代的比较少.
    【解决方案3】:

    在循环内部使用一个变量,并用它来测试循环继续条件

      int variable=input.nextInt(); //get initial input
    
      while (variable<=0)
        {
            //get next input
            variable=input.nextInt();
        }//end while
    

    这将循环直到输入为

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多