Java 什么';这种方法有什么错。。。?

Java 什么';这种方法有什么错。。。?,java,Java,当输入为“1,2,3,4,5,a”时,我认为它没有读取输入5,结果总和=10,平均值=2!为什么会这样? 顺便说一下,这只是一个方法,而不是整个代码 当scanner.nextInt()提供“5”时,下一行scanner.hasNextInt()为false。只需更改订单即可 import java.util.Scanner; public class InputCalculator { public static void inputThenPrintSumAndAverage(){

当输入为“1,2,3,4,5,a”时,我认为它没有读取输入5,结果总和=10,平均值=2!为什么会这样? 顺便说一下,这只是一个方法,而不是整个代码

当scanner.nextInt()提供“5”时,下一行scanner.hasNextInt()为false。只需更改订单即可

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();
    }
}
您还可以像这样清理代码

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();
    }
}
当scanner.nextInt()为您提供“5”时,下一行“scanner.hasNextInt()为false”。只需更改订单即可

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();
    }
}
您还可以像这样清理代码

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();
    }
}