2013-03-05 316 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對象爲兩個輸入。