扫描仪无法扫描我的输入

6

我正在尝试读取一行文本,然后进入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));
        }
    }

}

1
你的字符串比较有误。请使用 input.equals("molmassa") - Henrik Aasted Sørensen
4个回答

9

将您的if语句更改为:

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

那么它应该按你的预期工作。记住,始终使用equals()equalsIgnoreCase()方法比较字符串。==比较对象引用而不是实际值。


4

您需要替换等于检查:

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

with the following;

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

第一个检查是否为同一对象,而第二个检查它们是否具有相同的值,在这里你需要的是后者。

4
问题出在你的if条件语句上,将其改为:
if(input.equalsIgnoreCase("molmassa) )

一切都应该正常工作。

还有一件事,您不需要单独使用Scanner来获取Stringdouble输入,您可以使用一个Scanner对象来获取两个输入。


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

你应该使用equals方法或者equalsIgnoreCase方法来比较String对象。
if(input.equalsIgnoreCase("Molmassa")){}

==用于原始类型的等值检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接