2012-09-15 54 views
1

我無法讓這個程序正常工作,它需要2個數字,然後你告訴它做的數學類型。我寫了這個只是爲了刷新我的記憶,沒有用java幾個月的工作。下面是代碼:簡單的數學Java程序,如果語句不起作用

import java.util.Scanner; 
public class math { 
    public static void main(String[] args){ 
     Scanner one = new Scanner(System.in); 
     Scanner two = new Scanner(System.in); 
     System.out.print("Enter a number: "); 
     int n1 = one.nextInt(); 
     System.out.print("Enter a second number: "); 
     int n2 = one.nextInt(); 
     System.out.print("Add, subtract, multiply, or divide? "); 
     String f = two.nextLine(); 
     System.out.println(f); 
     if (f=="add"){ 
      System.out.println(n1 + n2); 
     }else if (f=="subtract") { 
      if (n1>n2){ 
       System.out.println(n1 - n2); 
      }else{ 
       System.out.println(n2 - n1); 
      } 
     }else if (f=="multiply"){ 
      System.out.println(n1 * n2); 
     }else if (f=="divide"){ 
      if (n1>n2){ 
       System.out.println(n1/n2); 
      }else{ 
       System.out.println(n2/n1); 
      } 
     } 
    } 
} 

編輯:謝謝大家,它與f.equals作品()

+2

[String.equals(String)](http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html) –

+0

String.equals()比較內容。 ==比較位置。爲了比較字符串文字和interned字符串,==會起作用。在所有其他情況下,.equals()是唯一的選項。基本上,.equals() –

回答

3

你的字符串比較需要改變使用String.equals()而不是==

if (f=="add"){ 

if ("add".equals(f)){ 

}else if (f=="subtract") { 

}else if ("subtract".equals(f)) { 

+0

這工作,謝謝。有沒有類似的方法來測試變量f中是否有單個字符或特定字符串的文本?例如:if(f包含字符串「在此輸入字符串」){執行此操作} – WillumMaguire

+0

f。包含(CharSequence c):)你可以在一個charsequence的地方使用一個字符串 –

3
if (f=="add") 

比較引用。你需要

if(f.equals("add")) 

因爲java有很多對象,主要是==用來作爲比較的參考,除非你沒有爲它做原型。

如果你想檢查是否有內部的字符串,

if(f.contains("asdas")) 
3

你比較字符串與==,使用f.equals("add")代替(同樣與其他的比較)。通常,==只能用於原始數據類型而不是對象(如String s)。

import java.util.Scanner; 
public class math { 
    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.print("Enter a number: "); 
     int n1 = in.nextInt(); 
     System.out.print("Enter a second number: "); 
     int n2 = in.nextInt(); 
     System.out.print("Add, subtract, multiply, or divide? "); 
     String f = in.nextLine(); 
     System.out.println(f); 
     if (f.equals("add")) { 
      System.out.println(n1 + n2); 
     } else if (f.equals("subtract")) { 
      if (n1 > n2){ 
       System.out.println(n1 - n2); 
      } else { 
       System.out.println(n2 - n1); 
      } 
     } else if (f.equals("multiply")) { 
      System.out.println(n1 * n2); 
     } else if (f.equals("divide")) { 
      if (n1>n2) { 
       System.out.println(n1/n2); 
      } else { 
       System.out.println(n2/n1); 
      } 
     } 
    } 
} 

而且,沒有必要使用兩個Scanner情況下,一個就足夠了。正如一個側面說明,字符串也有一個equalsIgnoreCase方法,它將測試相等性,但忽略字符的情況。

0

雖然

f.equals("add"); 

會工作,如果我輸入地址,它不會工作。爲了解決這個問題,你可以用

f.equalsIgnoreCase("add"); 

取代f.equals(「字」),它允許任何情況下,添加將工作,ADD會工作,會增加工作等

希望這有助於!