程序进行选择使用或是不使用,如果在选择过程中输入了不是Y或N字符,程序会回到定义choose函数的那一步然并打印提示信息后重新开始。如果选择使用然后手动输入两个数字进行乘法,并打印出结果;如果选择不使用则退出程序。
可是最后的结果始终都是else那一步不管输入的是Y还是N,不知道问题出在哪?求大神帮忙看下
           非常感谢!!!

解决方案 »

  1.   

    把==  换成equals()比较
      

  2.   

    您好,代码出问题的原因是字符串是String类型,属于引用类型。引用类型使用== 进行比较的时候比较的其实是引用地址,对用这类对象的比较,需要使用equals()方法进行比较,String类已经重写了equals方法,具体实现方式是这样的:
     public boolean equals(Object anObject) {
            if (this == anObject) {
                return true;
            }
            if (anObject instanceof String) {
                String anotherString = (String)anObject;
                int n = value.length;
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }您的代码可以写成这样,我写了一个小demo您可以参考一下:
    import java.util.Scanner;public class EqualsTest {
        public static void main(String[] args){
            System.out.println("输入'Y'后接两个数字,系统将自动进行乘法运算;输入'N',系统退出");
            while(true){
                Scanner scanner = new Scanner(System.in);
                //三目运算符,用法为 A ? B : C ,A 为boolean类型, A == true,则取 B 赋值, A == false,则取 C 赋值
                boolean isUse = "Y".equals(scanner.next()) ? true : false;
                if(isUse){
                    double num1 = scanner.nextDouble();
                    double num2 = scanner.nextDouble();
                    System.out.println(num1 + "*" + num2 + "=" + num1 * num2);
                }else{
                    System.out.println("退出");
                }
            }
        }
    }打印台输出结果为:
      

  3.   

    == 和equals 的区别好好看看吧  这里面学问也很多的
    == 换成equals应该就可以了