2013-09-21 35 views
-1

嗨我正在尝试编写一个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

您的循环只能执行一次。你究竟在努力完成什么?你的问题不清楚。你需要那些char的什么? '而'一块应该给无限循环。该计划似乎与您的问题中的陈述无关。 – sashkello

+0

[用用户输入计算平均值]的可能重复(http://stackoverflow.com/questions/10887498/calculate-average-with-user-input) – sashkello

回答

1

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

+0

嗯。 Steenslag,我想你只是给了我一个想法 –

+0

我将编辑代码并再次回来。谢谢 –

+0

这是我想出的新代码。但它并不按照我希望它工作的方式工作。最小最大。它不能很好地执行 –

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语句的,如果这是真的,休息,否则继续!?

0

编辑

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

您无法将您的“最小”检查与“最大”检查结合起来。相反,你要像

int numbersEntered = 0; 
double minimumNumber = 0; 
double maximumNumber = 0; 

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

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

    ++numbersEntered; 
} 

这里有几件事,没有任何意义,但我假设,通过“不使用数组”这包括诸如设置

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

在循环方面,你想要么循环多次的用户选择(在这种情况下,循环之前得到这个信息,然后初始化你与它循环)或要循环下去,直到用户输入一个特定的值(例如一个新行或任何不是数字的东西)。

现在到代码中的问题,您所提交..

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,你的代码将永远不会再进一步​​

尝试执行我在答案开始时提出的解决方案,如果你还在卡住,发回

+0

请我更新我的代码。如果你可以看看它。最大值和最小值执行得不好 –

+0

@Michael。我已经更新了我的答案,以解释您的修改。我不知道我能告诉你,如果没有给你解决方案,我还有多少,因为你a)要求我不要在原来的帖子中,b)你的问题似乎是功课,将是一件坏事 – Naravia