【问题标题】:count negative and positive integer with while loop用while循环计算负整数和正整数
【发布时间】:2021-01-19 23:04:54
【问题描述】:

需要修复我的程序。 使用 WHILE LOOP 编写 java 程序:有多少个正数和负数?用户提示 整数并以数字 0 结尾。 您将在我的输出中看到,如果用户输入 1 2 3 -1 -2 -3 0 我的输出答案:2 正/ 3 负。 第一个正数不算数。 请让我知道我的错误在哪里。我找不到它。

    Scanner input= new Scanner(System.in);
    
    //int data;
    int count = 0;
    int negative=0;
    int positive =0;
    
    System.out.print("Enter an integer (Program ends if enter 0): ");
    int data = input.nextInt();
    
    
    
    while (data !=0) {
    
    System.out.print("Enter an integer (Program ends if enter 0): ");
    data=input.nextInt();
    //count++;
    if (data < 0){
    negative++;
    }else if (data > 0){
    positive++;
    }
    count++;
  }
    System.out.println(positive + " positive numbers");
    System.out.println(negative + " negative numbers");
    
 }
}

output:
run:
Enter an integer (Program ends if enter 0): 1
Enter an integer (Program ends if enter 0): 2
Enter an integer (Program ends if enter 0): 3
Enter an integer (Program ends if enter 0): -1
Enter an integer (Program ends if enter 0): -2
Enter an integer (Program ends if enter 0): -3
Enter an integer (Program ends if enter 0): 0
2 positive numbers
3 negative numbers
BUILD SUCCESSFUL (total time: 11 seconds)

【问题讨论】:

    标签: java netbeans while-loop


    【解决方案1】:

    您似乎是在 while 循环之外获取第一个输入。

    System.out.print("Enter an integer (Program ends if enter 0): ");
    int data = input.nextInt(); // the first input 1 store in here
    

    并且这个1没有被检查。

          while (data !=0) {
     System.out.print("Enter an integer (Program ends if enter 0): ");
    data=input.nextInt();// 2,3,-1,-2,-3, 0 are inside the loop.
    

    仅检查此值。

    【讨论】:

      【解决方案2】:

      您的代码跳过了第一个条目,因为您是这样编码的。看看这些行:

      System.out.print("Enter an integer (Program ends if enter 0): ");
      int data = input.nextInt();
      

      您要求用户输入数据,但您没有对它做任何事情。您所有的数据处理都在 while 循环中进行。

      将这两行替换为:

      int data = 0;
      

      您需要做的就是声明用于获取输入的变量以供以后使用——您不需要立即使用它。

      您还必须修改 while 条件,以便在循环的第一次迭代中,值为 0 的数据不会自动退出程序:

      while ((data !=0) || (count == 0 && data == 0)) {
      

      输出:

      Enter an integer (Program ends if enter 0): 1
      Enter an integer (Program ends if enter 0): 2
      Enter an integer (Program ends if enter 0): 3
      Enter an integer (Program ends if enter 0): -1
      Enter an integer (Program ends if enter 0): -2
      Enter an integer (Program ends if enter 0): -3
      Enter an integer (Program ends if enter 0): 0
      3 positive numbers
      3 negative numbers
      

      【讨论】:

      • 感谢您的帮助。现在我也可以对其他程序进行正确的编码了。
      【解决方案3】:

      在进入循环后,您已经超过了第一个输入。

      1. 您正在读取输入并检查输入是否不等于零
      2. 再次进入循环后,您正在从扫描仪读取输入并将其存储到变量数据中(此处之前的数据被覆盖)

      更新代码:

      扫描仪输入 = new Scanner(System.in);

      // int data;
      int count = 0;
      int negative = 0;
      int positive = 0;
      
      System.out.print("Enter an integer (Program ends if enter 0): ");
      int data = input.nextInt();
      
      while (data != 0) {
          // count++;
          if (data < 0) {
              negative++;
          } else if (data > 0) {
              positive++;
          }
          count++;
          
          System.out.print("Enter an integer (Program ends if enter 0): ");
          data = input.nextInt();
      }
      System.out.println(positive + " positive numbers");
      System.out.println(negative + " negative numbers");
      

      【讨论】:

      • 谢谢。你的回答帮助我澄清我的错误。我很感激。
      【解决方案4】:
          package Loops;
          import java.util.Scanner;
          import java.util.SortedMap;
          public class Question12 {
              public static void main(String[] args) {
                  Scanner sc= new Scanner(System.in);
                  System.out.println("How many numbers you want to enter?\n");
                  int x= sc.nextInt();
                  int [] data= new int[x];
                  for(int i=0;i<data.length;i++){
                      System.out.println("Enter the number "+(i+1));
                      data[i]=sc.nextInt();
                  }
                  int count=0;
                  int negative=0;
                  int zero=0;
                  for(int i: data){
                      if(i>0){
                          count++;
                      }else if(i<0){
                          negative++;
                      }else if(i==0){
                          zero++;
                      }}
                  System.out.println("The positive number count is: "+count);
                  System.out.println("The negative number count is: "+negative);
                  System.out.println("The zero number count is: "+zero);
              }
          }
      

      【讨论】:

      • 编写一个程序来输入数字直到用户想要,最后它应该显示输入的正数、负数和零的计数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2012-09-14
      相关资源
      最近更新 更多