黑马程序员技术交流社区

标题: 看下这为什么计算不出值来 [打印本页]

作者: 林其荣    时间: 2013-1-11 17:05
标题: 看下这为什么计算不出值来
本帖最后由 林其荣 于 2013-1-13 16:58 编辑
  1. Scanner scan = new Scanner(System.in);
  2.                 System.out.print("请输入一个整数:");
  3.                 int num1 = scan.nextInt();
  4.                 System.out.print("请输入去运算符):");
  5.                 String str = scan.next();
  6.                 System.out.print("请输入一个整数:");
  7.                 int num2 = scan.nextInt();
  8.                 int result=0 ;
  9.                 if (str == "+") {
  10.                         result = num1 + num2;
  11.                 } else if (str == "-") {
  12.                         result = num1 - num2;
  13.                 } else if (str == "x") {
  14.                         result = num1 * num2;
  15.                 } else if (str == "/") {
  16.                         if (num2 != 0) {
  17.                                 result = num1 / num2;
  18.                         } else {
  19.                                 System.out.println("您输入有误!");
  20.                         }
  21.                 }
  22.                 System.out.println("结果是" + result);
复制代码
//请问一下这我怎么输入值计算的结果不对呢 怎么结果都等于0,
//我不是都判断了如果输入的符号对应哪个符号就计算出他的值吗怎么会是0
作者: 胡勇敏    时间: 2013-1-11 17:19
请注意 在比较两个字符串是否相同时要用equals而不能用 == ,因为String中覆写了equals方法会判断两个字符串的内容是否相等。而单纯的 == 是判断两个字符串在内存中的地址是否相等。所以你需要把str == 改为 str.equals()才正确。
作者: 张云杰    时间: 2013-1-11 18:56
请把所有的== 换成equals    == 实际上是比较的两个字符串的物理内存地址而equals 比较两个对象的值(如果默认继承自 OBJECT ,则 equals 比较两个对象地址)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2