A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 那片天空 中级黑马   /  2014-4-24 18:47  /  1535 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


想完成这样的一个计算的功能能,结果确不能实现(输入完第二个数之后就没反应了);谁能帮忙看看,是哪的问题,谢谢!

[X1]字符串是不是不能这样比较呀!!






14 个回复

正序浏览
谢谢大家的指点,我现在对这个问题好像有些概念了;

(str=="+")中的str这是一个变量,在程序运行中它存放的是一个指向相对应字符的地址(是抽象的),而“+”是一个单纯的字符(是一个实体),这样显然用“==”符号去做比较,无论“str”是何值也不会是等价的,所以程序中的判断语句都不成立直接结束了程序。
回复 使用道具 举报
字符串之间的比较使用equals方法
回复 使用道具 举报
字符串之间的比较使用equals
回复 使用道具 举报
  1. public class JiSuanqi{
  2.     public static void  main(String[] args){
  3.             Scanner s = new Scanner(System.in);
  4.             System.out.println("输如一个数");
  5.             double a = s.nextDouble();
  6.             System.out.println("输入一个运算符");
  7.             String str = s.next();
  8.             System.out.println(str);
  9.             System.out.println("输入另一个数");
  10.             double c = s.nextDouble();
  11.             if(str.equals("+")){
  12.                     add(a,c);
  13.             }else if(str.equals("-")){
  14.                     jian(a,c);
  15.             }else if(str.equals("*")){
  16.                     cheng(a,c);
  17.             }else if(str.equals("/")){
  18.                     chu(a,c);
  19.             }else{
  20.                     System.out.println("输入错误");
  21.             }
  22.     }

  23.         private static void chu(double a, double c) {
  24.                 // TODO Auto-generated method stub
  25.                 double b = a/c;
  26.                 System.out.println(b);
  27.         }

  28.         private static void cheng(double a, double c) {
  29.                 // TODO Auto-generated method stub
  30.                 double b =a*c;
  31.                 System.out.println(b);
  32.         }

  33.         private static void jian(double a, double c) {
  34.                 // TODO Auto-generated method stub
  35.                 double b =a-c;
  36.                 System.out.println(b);
  37.         }

  38.         private static void add(double a, double c) {
  39.                 double b =a+c;
  40.                 System.out.println(b);
  41.                
  42.         }
  43. }
复制代码

可以了,把==换成equals就行了。
回复 使用道具 举报
import java.util.Scanner;

public class jisuanqi {
        public static void main(String[] args) {
                Scanner s = new Scanner(System.in);
                System.out.println("输入一个数");
                double a = s.nextDouble();// 从键盘上输入一个数
                System.out.println("输入要做的运算符");
                String str = s.next();// 从键盘上输入一次字符
                System.out.println(str);
                System.out.println("输入另一个数");
                double c = s.nextDouble();// 从键盘上接受另一个数

                //==比较的是字符串在内存中的地址值,比较字符串的内容要用equalsIgnoreCase                if ("+".equalsIgnoreCase(str)) {// 拿输入的字符与之判断
                        add(a, c);// 如果成立调用方法
                } else if ("-".equalsIgnoreCase(str)) {
                        jian(a, c);
                } else if ("*".equalsIgnoreCase(str)) {
                        cheng(a, c);
                } else if ("/".equalsIgnoreCase(str)) {
                        chu(a, c);
                }
                //System.out.println("输入有误");
        }

        public static double add(double a, double c) {
                double sum;
                sum = a + c;
                System.out.println(sum);
                return sum;
        }

        public static double jian(double a, double c) {
                double sum;
                sum = a - c;
                System.out.println(sum);
                return sum;
        }

        public static double cheng(double a, double c) {
                double sum;
                sum = a * c;
                System.out.println(sum);
                return sum;
        }

        public static double chu(double a, double c) {
                double sum;
                sum = a / c;
                System.out.println(sum);
                return sum;
        }
}

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 曲佳奇 于 2014-4-25 11:58 编辑
  1. import java.util.Scanner;

  2. class Demo{
  3.         public static void main(String[] args) {
  4.                 String c;
  5.                 double a,b;
  6.                 Scanner sc = new Scanner(System.in);        
  7.                 System.out.println("输入一个数");
  8.                 a=sc.nextDouble();
  9.                 System.out.println("输入一个符号");
  10.                 c=sc.next();
  11.                 System.out.println("输入另一个数");
  12.                 b=sc.nextDouble();
  13.                 System.out.print("结果为:");
  14.                 switch(c.charAt(0)){
  15.                         case '+':
  16.                                 System.out.println(a+b);break;
  17.                         case '-':
  18.                                 System.out.println(a-b);break;
  19.                         case '*':
  20.                                 System.out.println(a*b);break;
  21.                         case '/':
  22.                                 System.out.println(a/b);break;
  23.                          default:
  24.                                  System.out.println("输入符号有误!");
  25.                         
  26.                 }
  27.         }
  28. }
复制代码
图片看不太清...  只看清题目了.. 这么写行不?

回复 使用道具 举报
哦,有个么个东西呢,是我还没看到那的吧
回复 使用道具 举报
图片太小而且程序好冗余的样子,所以没细看,也不知道你报错是什么,但我就照我的经验说说。比较一般有两种,一个是==一个是.equals()方法,在没有重写(override)equals()的基础上,这两个方法都比较的是在内存中的引用地址而非内容值,但String类默认的重写了这个方法,比较的是字符串的内容值,但很不巧的是你用的是==,==号左边的变量和右边的变量分别指向不同的内容,所以结果为false。PS:还有我注意你好像是想键盘输入一个数字然后输入符号什么的。。。这个我感觉最好用char来接受好点
回复 使用道具 举报
str.equals("+")
回复 使用道具 举报

呵呵,这样可以吧
回复 使用道具 举报
public static double add(double a,double c){
                double sum;
                sum=a+c;
                System.out.println(sum);
                return sum;
        }
        public static double jian(double a,double c){
                double sum;
                sum=a-c;
                System.out.println(sum);
                return sum;
        }
        public static double cheng(double a,double c){
                double sum;
                sum=a*c;
                System.out.println(sum);
                return sum;
        }
        public static double chu(double a,double c){
                double sum;
                sum=a/c;
                System.out.println(sum);
                return sum;
        }
}
回复 使用道具 举报
import java.util.Scanner;

/**
* 做一个能完成四则运算的计算器
* @author Administrator
*
*/
public class jisuanqi {
        public static void main(String[] args){
                Scanner s=new Scanner(System.in);
                System.out.println("输入一个数");
                double a=s.nextDouble();//从键盘上输入一个数
                System.out.println("输入要做的运算符");
                String str=s.next();//从键盘上输入一次字符
                System.out.println(str);
                System.out.println("输入另一个数");
                double c=s.nextDouble();//从键盘上接受另一个数
       
                if(str=="+"){//拿输入的字符与之判断
                        add(a,c);//如果成立调用方法
                       
                }else if(str=="-"){
                        jian(a,c);
                }else if(str=="*"){
                        cheng(a,c);
               
                }else if(str=="/"){
                        chu(a,c);
                }
                System.out.println("输入有误");
        }
回复 使用道具 举报
我开始时复制来着,提示超出字节数了
回复 使用道具 举报
这全是 图片上的代码怎么复制啊,  你把代码复制上来,别人才能去验证啊 。难道还要别人手打一遍??
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马