我有一个可以存储多达500个值的数组。当我输入500个值时,一切都按原样运行。但是,我想输入尽可能多的值,500或更少,并仍然得到一个输出。例如,获得任意数量的平均值,500或更少。
继续我的while循环我现在不会终止,直到达到500个数字:
public class StatsPackage{
static InputStreamReader isr = new InputStreamReader (System.in);
static BufferedReader br = new BufferedReader (isr);
String [] inputs = new String [500];
static int inputs2[] = new int [500];
double [] scores = new double [500];
int count;
static int lowest, temp, i = 0;
static double sum, mean, median, sumOfSquares, variance, stdDev;
static boolean even = (inputs2.length & 1) == 0;
static boolean odd = (inputs2.length % 1) != 0;
static double calcMean (int inputs2[],int count) throws IOException{
while(i < inputs2.length){
String inputs = br.readLine();
String [] Values = inputs.split ("\\s+");
inputs2 [i] = Integer.parseInt(Values[0]);
i++; }//end of while loop
for (i = 0; i < inputs2.length; i++){
sum = sum + inputs2[i];
}
mean = (sum/count);
return mean;
}
输入是我的数字输入字符串,值是一个字符串数组,我将字符串从“值”解析为我的整数数组,'inputs2'
有关如何提前终止循环的任何想法或帮助?
示例输入 -
49 66 73 56 3 39 33 77 54 29
示例输出 -
Mean: 47.90
Median: 51.50
Variance: 458.29
Standard Deviation: 21.41
答案 0 :(得分:3)
您需要最终用户在完成输入号码时告诉您。这可以通过多种方式完成。最终用户可以
-1
),在所有情况下,您都需要存储已存储在inputs2
数组中的元素数量,并使用该索引运行检查数组活动部分的循环。由于两个原因,这是次优的:
要解决这两个问题,请使用ArrayList<Integer>
而不是数组。
以下是用户输入空行时退出的示例实现:
List<Integer> inputs2 = new ArrayList<Integer>();
while(true) {
String inputs = br.readLine();
String [] values = inputs.split ("\\s+");
if (values.length() == 0)
break; // Users entered an empty line, so we exit
for (int i = 0 ; i != values.length() ; i++) {
inputs2.add(Integer.parseInt(Values[i]));
}
} //end of while loop
答案 1 :(得分:0)
使用特殊值作为循环终止符,例如“-1”,然后在条件下使用它来结束循环。您还可以在while块的正文中检查此条件,并使用break
语句。