您好我正在尝试编写一个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);
}
}
答案 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而你的代码永远不会再进一步
尝试实施我在答案开始时建议的解决方案,如果您仍然卡住,请回复