2013-03-05 17 views
6

私は行を読んでから、if文に行きます。しかし、最初の入力が赤色になった後、ただ終了します。 は私が間違って何見当がつかない、と私はあなたがequals法またはequalsIgnoreCase方法でStringオブジェクトに等しくなければならないスキャナが自分の入力をスキャンしていません

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

答えて

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

それを把握することはできません。

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(input.equalsIgnoreCase("molmassa)) 

からif条件変更をされ、すべてのものが正常に動作する必要があります。

あなたが入力の両方のために1つのScannerオブジェクトを使用することができStringdouble入力を取るために別のScannerを持っている必要はありません。もう一つ。