扫描仪没有扫描我的输入

时间:2013-03-05 16:58:31

标签: java java.util.scanner

我想尝试读一行,然后进入if语句。但是在第一次输入红色后它就会终止。 我不知道出了什么问题,我无法弄清楚

import java.util.Scanner;

public class mainen {

    public static void main(String[] args) {
        Formler form = new Formler();
        Scanner Sscan = new Scanner(System.in);
        Scanner Dscan = new Scanner(System.in);
        String input;
        System.out.println("Formler: Molmassa");
        input = Sscan.nextLine();

        if(input == "molmassa" || input == "Molmassa"){
            double m;
            double M;
            System.out.println("Massa: "); m = Dscan.nextDouble();
            System.out.println("Molmassa: "); M = Dscan.nextDouble();
            System.out.println(form.getMolmassa(m, M));
        }
    }

}

4 个答案:

答案 0 :(得分:9)

将您的if声明更改为:

if(input.equalsIgnoreCase("molmassa") ) {  }

然后它应该按预期工作。请务必使用equals()equalsIgnoreCase()方法比较字符串。 ==比较对象引用而不是实际值。

答案 1 :(得分:4)

您需要替换等于支票:

 if(input == "molmassa" || input == "Molmassa"){

以下内容;

 if(input.equals("molmassa") || input.equals("Molmassa")){

第一个检查String是否是同一个对象,而第二个检查它们是否是相同的值,这就是你需要的。

答案 2 :(得分:4)

问题在于你if条件将其更改为

if(input.equalsIgnoreCase("molmassa) )

并且每件事都应该可以正常工作。

您不需要单独Scanner来进行Stringdouble输入,您可以使用一个Scanner对象进行输入。

答案 3 :(得分:3)

if(input == "molmassa" || input == "Molmassa"){}

您应该使用String方法或equals方法等同equalsIgnoreCase个对象。

if(input.equalsIgnoreCase("Molmassa")){}

==用于原始等于检查。