解决扫描仪输入中的if / else问题

时间:2018-06-01 09:39:02

标签: java if-statement

我创建了两个获取它们的Scanner对象。但是当输入完成时,如果/ else代码不起作用。问题出在哪里?主要问题是" InputMismatchException"。我在用户输入除双精度值之外的值时,程序会显示他"请输入正确的格式"。我用这两个输入来处理这个异常。什么是正确的代码?你能解释我并写出正确的代码吗?tnx。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'
    }
}

3 个答案:

答案 0 :(得分:0)

问题:您正在阅读iqInput.nextDouble();termMeanInput.nextDouble();的值。但是,您不是将它们的值存储在任何变量中,以便在if语句中使用它。

试试这个:

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    try {
        System.out.print("Please enter your IQ: ");
        Double IQ = s.nextDouble(); // Modification 

        System.out.print("Please enter your term mean: ");
        Double termMean = s.nextDouble();

        if(IQ<100 && termMean<17) {
            System.out.println("You have no discount");
        } else if(IQ>110 && termMean>18) {
            System.out.println("You got 30 percent discount.");
        } else {
            System.out.println("You got 20 percent discount.");
        }
    }
    catch(InputMismatchException e) {
        System.out.println("Please enter the right input format.");
    }
}

<强>修改:

  1. 添加了Double IQ = iqInput.nextDouble(); and Double termMean = termMeanInput.nextDouble();

  2. 在if-else语句中使用IQ and termMean的值。

答案 1 :(得分:0)

我认为这是因为你在条件下调用扫描方法。

您是否可以使用一台扫描仪并将扫描值放入变量?

答案 2 :(得分:0)

如果我们使用一个扫描仪而不是2个,并存储输入,

import java.util.Scanner;

public class NestedIf {

public static void main(String[] args) {
    Double iq, mean;

    Scanner iqInput=new Scanner(System.in);
    System.out.println("Please enter your IQ: ");
    iq = iqInput.nextDouble();

    System.out.println("Please enter your term mean: ");
    mean = iqInput.nextDouble();


    if(iq != null && mean != null){

        if(iq>110 && mean>18){
            System.out.println("You got 30 percent discount.");

        }else if(iq>100 && mean>17){
            System.out.println("You got 20 percent discount.");

        }else if(iq<100 && mean<17){
            System.out.println("You have no discount");
        }
    }else{
        System.out.println("Please enter the right format");
    }
}

}