2013-03-05 253 views
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 2013-03-05 16:59:55

回答

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

您应该等于String对象与equals方法或equalsIgnoreCase方法。

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

==用于本原等同检查。

9

更改if声明:

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

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

4

您需要更换等于检查:

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

有以下;

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

首先检查是否String s为同一对象,而他们是相同的值,这是第二次检查你所需要的在这里。

4

的问题是你if条件将其更改为

if(input.equalsIgnoreCase("molmassa)) 

和每一件事应该正常工作。你不需要

一两件事有不同的Scanner采取Stringdouble输入您可以使用一个Scanner对象为两个输入。