2012-09-15 52 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会工作,会增加工作等

希望这有助于!