扫描仪不扫描我的输入
问题描述:
我想读一行,然后进入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));
}
}
}
答
if(input == "molmassa" || input == "Molmassa"){}
您应该等于String
对象与equals
方法或equalsIgnoreCase
方法。
if(input.equalsIgnoreCase("Molmassa")){}
==
用于本原等同检查。
答
更改if
声明:
if(input.equalsIgnoreCase("molmassa")) { }
然后,你期望它应该工作。请记住,始终使用equals()
或equalsIgnoreCase()
方法比较字符串。 ==
比较对象引用而不是实际值。
答
您需要更换等于检查:
if(input == "molmassa" || input == "Molmassa"){
有以下;
if(input.equals("molmassa") || input.equals("Molmassa")){
首先检查是否String
s为同一对象,而他们是相同的值,这是第二次检查你所需要的在这里。
答
的问题是你if
条件将其更改为
if(input.equalsIgnoreCase("molmassa))
和每一件事应该正常工作。你不需要
一两件事有不同的Scanner
采取String
和double
输入您可以使用一个Scanner
对象为两个输入。
你的字符串比较是错误的。使用'input.equals(“molmassa”)'代替。 – Henrik 2013-03-05 16:59:55