为什么我不能做 a 和 b 的总和?

时间:2021-02-04 05:48:37

标签: java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter first number");
        int a = sc.nextInt();
        boolean aValid = sc.hasNextInt();
        System.out.println(aValid);
        System.out.println("Enter Second number");
        int b = sc.nextInt();
        boolean bValid = sc.hasNextInt();
        System.out.println(bValid);
        if(aValid && bValid){
            System.out.println("Sum of number is "+(a+b));
        }
        else{
            System.out.println("Enter integer number");
        }
    }
}

我尝试获取 a 和 b 的输入并验证 a 和 b 是整数。但它需要三个输入。它给出前两个数的和,并给出后两个数的有效性。

3 个答案:

答案 0 :(得分:0)

您需要在输入之前放置检查整数语句

boolean aValid = sc.hasNextInt();
        int a = sc.nextInt();
 boolean bValid = sc.hasNextInt();
        int b = sc.nextInt();

答案 1 :(得分:0)

运行此代码使错误相当明显。一些额外的调试语句,在调试或测试中运行代码也会使其清晰。

Scanner.nextInt() 如果得到一个非整数将抛出异常。 另一方面,Scanner.hasNextInt() 返回一个布尔值以提前警告您它是否有整数 - 它不会从扫描器中获取值。

此代码有一些微小的更正,可以实现您所说的结果。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int a = 0;
        int b = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter first number");
        boolean aValid = sc.hasNextInt();
        if (aValid) {
            a = sc.nextInt();
        } else {
            sc.next(); //Discard the non-integer input.fr
        }
        System.out.println(aValid);
        System.out.println("Enter Second number");
        boolean bValid = sc.hasNextInt();
        if (bValid) {
            b = sc.nextInt();
        }
        System.out.println(bValid);
        if (aValid && bValid) {
            System.out.println("Sum of number is " + (a + b));
        } else {
            System.out.println("Enter integer numbers only");
        }
    }
}

答案 2 :(得分:0)

import java.util.*;

public class Main {
    public static void main(String[] args) {
        int a = 0;
        int b = 0;
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter first number");
        boolean aValid = sc.hasNextInt();
        if (aValid) {
            a = sc.nextInt();
        } 
        System.out.println(aValid);
        System.out.println("Enter Second number");
        boolean bValid = sc.hasNextInt();
        if (bValid) {
            b = sc.nextInt();
        }
        System.out.println(bValid);
        if (aValid && bValid) {
            System.out.println("Sum of number is " + (a + b));
        } else {
            System.out.println("Enter integer numbers only");
        }
       
    }
}
相关问题