java - 阅读和阅读确定整数的数量

时间:2014-02-13 00:53:08

标签: java

我是java中的新蜜蜂...所以我有一个任务,我被困住可以有人帮助我

我必须编写一个读取未指定数量的整数的程序,确定读取了多少正值和负值,并计算输入值的总和和平均值(不计零)。当用户输入0时,程序应该结束。

示例运行:

Enter an int value (the program exits if the input is 0: 1 3 -1 2 0 
The number of positives is 3
The number of negatives is 1
The total is 5
The average is 1.25

我写的东西是......逻辑看似正确,但它不起作用......

我写的代码是

public class AverageNumbers {

    public static void main(String[] args) 
    {           
            int data = 0;
            int positive = 0;
            int negative = 0;
            int count = 0;


            while (data !=0) 
            {
                String strdata = JOptionPane.showInputDialog ("Enter the integer The input ends if the value is 0")  ;
                data = Integer.parseInt(strdata);
                if (data < 0 || data > 0){
                    count++;

                if (data >0)
                    positive++;
                else if (0<data)
                    negative++;
                count = count + data;
                count++;
            }


            String strOutput = "The number of positives is  " + positive;
            JOptionPane.showMessageDialog(null, strOutput);
            strOutput = "The number of negatives is  " + negative;
            JOptionPane.showMessageDialog(null, strOutput);
            strOutput = "The number of total is " + count ;
            JOptionPane.showMessageDialog(null, strOutput);
            strOutput = "The number of average is " + count/data ;
            JOptionPane.showMessageDialog(null, strOutput);
    }
}

6 个答案:

答案 0 :(得分:1)

在while循环条件中,您正在检查data !=0是否返回false并且while循环代码块未执行,因为数据在程序开始时设置为int data = 0;

您的问题有两个简单的解决方案:

  1. 将数据设置为0以外的其他内容
  2. 使用do...while循环,请参阅下面的示例

    int data = 0;
    ...
    do{
        ...
    } while (data != 0);
    

答案 1 :(得分:1)

这里有两个错误:

  • 您的循环永远不会执行,因为在初始运行时data == 0。您可以通过提前提问而不是稍后提出问题来解决此问题:

    String strdata = JOptionPane.showInputDialog ("Enter the integer The input ends if the value is 0")  ;
    int data = Integer.parseInt(strdata);
    

    然后,在循环的后面(向下):

    strdata = JOptionPane.showInputDialog ("Enter the integer The input ends if the value is 0")  ;
    data = Integer.parseInt(strdata);
    
  • 即使如果你能够进入循环,你也会获得所有正数计数而没有负数计数。原因如下:data > 00 < data是等效的布尔语句。

    你可能的意思是:

    if (data > 0) {
        positive++;
    } else if (data < 0) {
        negative++;
    }
    

答案 2 :(得分:1)

正如其他人所说,初始化data是一个问题,但请参阅下面的建议。

你要遇到的另一个问题是你count做了太多。

假设count从0开始,用户输入3。

if (data < 0 || data > 0){
     count++;

你现在在一个,你进入

count = count + data;
     count++;

计数最多4,然后++最多5。

即使你输入了0,你仍然可以在打破循环之前改变计数。

尝试像Orel那样提到一个总和int来跟踪总和。保持计数只计数,只计算最底部的计数++,完全擦除

if (data < 0 || data > 0){
      count++;

相反,尝试这样的事情进行0检查,以防止搞砸整个事情:

while(true){
     String strdata = JOptionPane.showInputDialog ("Enter the integer The input ends if the value is 0")  ;
     data = Integer.parseInt(strdata);
     if (data == 0)
          break;
...
}

你也可以在这里使用do / while。这将允许您将数据初始化为您喜欢的任何(或没有)。另一件事,确保他们输入的值不是null并且是一个int,当你提示输入一个数字时,你的教授肯定会输入“sleirjwlfie”,因为最好的做法是假设用户会破坏你的程序。所以伪代码就像:

while(true){
// get value from user
// if value is null OR value is not an int
     continue;
}

我会让你理清如何在那里不要杀死学习经历,但我知道这种事情不止一次让我在校学习。

祝你好运!

答案 3 :(得分:0)

嗯,第一个问题就在这里。您将数据初始化为0:

int data = 0;

然后你的循环条件检查数据!= 0:

while (data !=0) {
      ...
}

由于数据分配为0,因此永远不会输入循环。

答案 4 :(得分:0)

您应该添加'sum'int变量并更改此行

count = count + data;

有了这个

总和+ =数据;

同时将while-loop更改为do-while循环。

答案 5 :(得分:0)

+1用于尝试和编写几乎正常工作的代码:)

正如其他人指出的那样,你的代码几乎没有需要修复的错误。

  1. 您的数据分配至少应在进入前一次 while(数据)循环。
  2. 如果增加计数,则无需检查输入值 它是0然后你不会进入循环。否则你将不得不这样做 无论如何增加数量。
  3. 要计算总数和平均值,您需要再使用一个变量
  4. 您使用的是IDE吗? 使用IDE(Eclipse是最好的之一)并逐步调试代码以检查发生了什么。 谷歌如何使用IDE和调试。

    以下是工作代码供您参考。

    import javax.swing.*;
    
    public class AverageNumbers {
    
        public static void main(String[] args) 
        {           
                int data = 0;
                int positive = 0;
                int negative = 0;
                int count = 0;
                int total = 0;
                double avg = 0;
    
    
                String strdata = JOptionPane.showInputDialog ("Enter the integer The input ends if the value is 0")  ;
                data = Integer.parseInt(strdata);
    
                while (data !=0) 
                {
                    if (data >0) {
                        positive++;
                    } else { 
                        negative++;
                    }                    
                    total = total + data;
                    count++;
    
                    strdata = JOptionPane.showInputDialog ("Enter the integer The input ends if the value is 0")  ;
                    data = Integer.parseInt(strdata);
                }
    
    
                String strOutput = "The number of positives is  " + positive;
                JOptionPane.showMessageDialog(null, strOutput);
                strOutput = "The number of negatives is  " + negative;
                JOptionPane.showMessageDialog(null, strOutput);
                strOutput = "The number of total is " + count ;
                JOptionPane.showMessageDialog(null, strOutput);
                avg = total * 1.0 /count ;
                strOutput = "The number of average is " + avg;
                JOptionPane.showMessageDialog(null, strOutput);
                System.exit(0);
        }
    }