无需使用数组即可无限输入

时间:2013-09-21 12:35:17

标签: java input

您好我正在尝试编写一个java程序,它接受来自用户的尽可能多的输入并输出最大值,最小值和平均值而不使用数组。

  • **这是说明:

编写一个程序LoopStatistics,它读取控制台上的值并输出一些统计信息 之后输入的数字集的数量。如果未输入正数,则为程序 打印没有输入数字。 分配 用户可以根据需要在控制台上输入任意数量的正浮点数。零(或一个 信号输入结束(不能输入更多数字)。输入程序后 显示器 输入的最小数字(分钟) 输入的最大数字(最大) 输入的所有数字的平均值(平均值)**

public class LoopStatistics {

    public static void main(String[] args) {
        char ch;
        int n=0;
        TextIO.putln("enter numbers:");
        for (ch = 'a'; ch <= 'z'; ch++){
            n = ch;
            n =TextIO.getInt();
            while (n>0){
                ch++;
            }
            break;
        }
        TextIO.put(n);
    }
}

3 个答案:

答案 0 :(得分:1)

不要存储所有用户条目,只保留最小,最大,运行总数和条目数。

答案 1 :(得分:0)

让我们在这里分析您的代码:

    for (ch = 'a'; ch <= 'z'; ch++){

        n = ch;                // the value of n is now equal to the value of ch
        n =TextIO.getInt();    // now the value of n is changed to the value received by the TextIO.getInt()
        while (n>0){           
            ch++;
        }
        break;                // your loop stops here in it's first iteration
    }
    TextIO.put(n);            

这里有一个简单的问题,这段代码中变量“ch”的用法是什么??

现在,如果您只是想检查用户输入是否小于或等于零,为什么不在循环中使用简单的if语句,如果是,则中断,否则继续!?

答案 2 :(得分:0)

修改

现在你的问题是你正在设置一堆你不需要的变量。老实说,你的问题不是编程问题,而是一个基本逻辑问题。

您无法将“最低”支票与“最高”支票合并。相反,你想要像

这样的东西
int numbersEntered = 0;
double minimumNumber = 0;
double maximumNumber = 0;

while(userIsEnteringNumbers) {
    if(numberEntered < minimumNumber) {
        minimumNumber = numberEntered;
    }

    if(numberEntered > maximumNumber) {
        maximumNumber = numberEntered;
    }

    ++numbersEntered;
}

这里有一些没有意义的事情,但我假设通过“不使用数组”这包括诸如集合之类的东西

在这种情况下,您不希望存储用户输入,只存储用户输入的最低值,最高值和值数。用户输入值后计算平均值。

就循环而言,您希望循环用户选择的次数(在这种情况下,在循环之前获取此信息,然后使用它初始化for循环),或者您希望无限循环直到用户输入特定值(例如新行或任何非数字的行)。

现在解决您提交的代码中的问题..

for (ch = 'a'; ch <= 'z'; ch++)

你为什么用字母循环?你似乎没有使用任何需要字母的东西,所以只需使用数字来保持简单。您可以在for循环中初始化变量,例如

for (int i = 0; i < 10; ++i)

尽量避免重复使用变量,这会使您的代码难以阅读。

n = ch;
n =TextIO.getInt();

您为ch赋值n,然后立即为其指定TextIO.getInt()的值。声明'n = ch'可能也不存在。如果您想对其执行某种操作,请使用 + =, - =,* = / =

while (n>0){
        ch++;
    }

这实际上是无限循环或永远不会达到的循环,具体取决于n的值。你递增的唯一变​​量是ch,这意味着n总是大于0而你的代码永远不会再进一步​​

尝试实施我在答案开始时建议的解决方案,如果您仍然卡住,请回复