import java.util.Scanner;
public class InputCalculator {
public static void inputThenPrintSumAndAverage(){
Scanner scanner = new Scanner(System.in);
boolean first = true;
int sum = 0;
int count = 0;
int avg = 0;
while(true){
int number = scanner.nextInt();
boolean isAnInt = scanner.hasNextInt();
if(isAnInt){
sum += number;
count++;
avg = Math.round((sum)/count);
}else{
System.out.println("SUM = " + sum + " AVG = " + avg);
break;
}
scanner.nextLine();
}
scanner.close();
}
}
当输入为“ 1、2、3、4、5,a”时,我认为它不是在读取输入5,结果总和= 10且avg = 2!为什么会这样呢? 顺便说一下,这只是一种方法,而不是整个代码!
答案 0 :(得分:2)
当scanner.nextInt()为您提供“ 5”时,下一行“ scanner.hasNextInt()为假”。只需更改订单顺序
import java.util.Scanner;
public class InputCalculator {
public static void inputThenPrintSumAndAverage(){
Scanner scanner = new Scanner(System.in);
boolean first = true;
int sum = 0;
int count = 0;
int avg = 0;
while(true){
boolean isAnInt = scanner.hasNextInt();
if(isAnInt){
int number = scanner.nextInt();
sum += number;
count++;
avg = Math.round((sum)/count);
}else{
System.out.println("SUM = " + sum + " AVG = " + avg);
break;
}
scanner.nextLine();
}
scanner.close();
}
}
您还可以像清除代码一样
import java.util.Scanner;
public class InputCalculator {
public static void inputThenPrintSumAndAverage(){
Scanner scanner = new Scanner(System.in);
int sum = 0;
int count = 0;
while( scanner.hasNextInt() ){
int number = scanner.nextInt();
sum += number;
count++;
}
scanner.close();
double avg = Math.round((sum)/count);
System.out.println("SUM = " + sum + " AVG = " + avg);
}
}