错误与试图找到最小和最大时,也发现“n”数量的用户输入的平均值
问题描述:
package HW2_Min_Max;
import java.util.Scanner;
public class HW2_Min_Max {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("Please input a positive interger that indicates number of positive intergers ");
int number = myScanner.nextInt();
while (number <= 0) {
System.out.println("Please input interger");
number = myScanner.nextInt();
}
int i=1; //i is to store current iteration
int sum=0; //sum is to store sum of the input
int x; //x is to store the user input
while (i <= number){
System.out.println("Please input a positive interger ");
x = myScanner.nextInt();
sum = sum + x;
i++;
}
int average = sum/number;
System.out.println("The average is " + average);
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
if (number < min){
min = number;
}
if (number > max) {
max = number;
}
System.out.println("The minimum value is " + min);
System.out.print("and the maximum value is" + max);
}
}
}
1. ^这是我得到我的问题,在Netbeans的最后一个大括号我得到一个错误,说: “类,接口或枚举的预期”,但我不知道为什么。请原谅我的无知,因为我是一个非常新鲜的java初学者,更不用说编程了。错误与试图找到最小和最大时,也发现“n”数量的用户输入的平均值
答
现在工作的很好。我做了一些改变。请考虑一下。我希望这会有所帮助。
Scanner myScanner = new Scanner(System.in);
System.out.println("Please input a positive interger that indicates number of positive intergers ");
int number = myScanner.nextInt();
while (number <= 0) {
System.out.println("Please input interger");
number = myScanner.nextInt();
}
int[] arr = new int[number]; // Store values in array
int i=0; //i is to store current iteration
int sum=0; //sum is to store sum of the input
int x; //x is to store the user input
int max = 0;
int min = 0;
for(i=0;i<number;i++){
System.out.println("Please input a positive interger ");
arr[i] = myScanner.nextInt();
sum = sum + arr[i];
}
int average = sum/number;
System.out.println("The average is " + average);
// Put initial values in min and max for comparing
min =arr[0];
max = arr[0];
for(i=1;i<number;i++)
{
// Compare if values is less than arr[i]
if (arr[i] < min){
min = arr[i];
}
// Compare if values is greater than arr[i]
if (arr[i] > max) {
max = arr[i];
}
}
System.out.print("The minimum value is " + min);
System.out.println(" and the maximum value is " + max);
}
}
这里是输出:
答
在第一部分,我会建议你使用do-while
循环,以测试号码的数量。像,
int number;
do {
System.out.println("Please input a positive integer that "
+ "indicates number of positive integers ");
number = myScanner.nextInt();
} while (number <= 0);
然后,你需要设置min
和max
在你的循环(或存储所有读取的值)。我宁愿Math.max
和Math.min
。我也会从0
算起。像,
int i = 0; // i is to store current iteration
int sum = 0; // sum is to store sum of the input
int x; // x is to store the user input
int max = Integer.MIN_VALUE; // store the max user input
int min = Integer.MAX_VALUE; // store the min user input
while (i < number) {
System.out.println("Please input a positive integer ");
x = myScanner.nextInt();
if (x > 0) { // make sure it's a positive integer
min = Math.min(min, x);
max = Math.max(max, x);
sum += x;
i++;
}
}
int average = sum/number;
System.out.println("The average is " + average);
System.out.println("The minimum value is " + min);
System.out.println("and the maximum value is " + max);
它似乎最后的大括号并不是必需的。请记住,'{'的数量应该等于'}'的数量,您希望确保您打开的每个大括号最终都会关闭。 – dat3450
正确,一致的缩进是你的朋友。 –
好了,以便解决让我运行代码的问题,但是我的实际输出出现了问题?我输入5个正整数,平均值总是正确的,但最大值和最小值的输出出错了,我不知道为什么? –