【问题标题】:Why my if Statement is doing opposite of what i am tellling it to do Java [duplicate]为什么我的 if 语句做的与我告诉它做 Java 的相反 [重复]
【发布时间】:2014-04-17 03:10:01
【问题描述】:
import java.util.Scanner;

   class Lev {                                          //main class


public static void main(String args[]){
    Scanner read = new Scanner(System.in);



    Calculator obj1 = new Calculator();
    Per obj2 = new Per();
    String des;
    System.out.print("Enter your choice= ");
    des = read.nextLine();

    if(des=="calc" || des=="calculator"){

        obj1.calcultr();   

    }

    if(des=="per" || des=="percentage")
    {

        obj2.percentage();  
    }

    else
    {
        System.out.println("Argument not understood");

    }


    read.close();


  }

 }              //main class ends




import java.util.Scanner;                       //2nd class

public class Calculator {


Scanner inp = new Scanner(System.in);

public void calcultr(){

    double num1,num2,strge = 0;
    char q;
    System.out.println("Enter 2 numbers to continue");
    System.out.print("Num1= ");
    num1 = inp.nextDouble();
    System.out.print("Num2= ");
    num2 = inp.nextDouble();
    System.out.print("Enter what do you want to do= ");
    q = inp.next().charAt(0);


        if(q=='+'){

            strge = num1+num2;
            System.out.print("Result= " + strge);
        };

        if(q=='-'){

            strge = num1 - num2;
            System.out.print("Result= " + strge);
        }

        if(q=='*'){

            strge = num1 * num2;
            System.out.print("Result= " + strge);
        }

        if(q=='/')
        {

            strge = num1/num2;
            System.out.print("Result= " + strge);
        }





}


}



import java.util.Scanner;               //3rd class



public class Per {

Scanner inp = new Scanner(System.in);

public void percentage(){

    double numa,from,per;

    System.out.println("Enter total number attained= ");
    System.out.print("Number Attained= ");
    numa = inp.nextDouble();
    System.out.print("Enter total marks from which marks attained= ");
    from = inp.nextDouble();
    per = (numa/from)*100;
    System.out.print("Percentage Achieved= " + per);

}

}

【问题讨论】:

  • 正如 Sotirios 所暗示的那样......与字符串 == 正在比较对象是否相同......而不是值。使用 string.equals(2ndString) 代替。

标签: java string if-statement


【解决方案1】:

“非常感谢大家,但最后仍然会在程序终止时显示 else 结果”

您正在使用两个不同的 if 语句,而第二个 if 语句有一个 else 块。我相信你正在尝试做的是这个

if(des.equals("calc") || des.equals("calculator")){

    obj1.calcultr();   

}

else if(des.equals("per") || des.equals("percentage"))
{

    obj2.percentage();  
}

else
{
    System.out.println("Argument not understood");

}

这应该可以解决您在程序结束时仍会打印出 else 的问题。按照你的逻辑,你说如果你选择 calc,它会调用 calcultr(),但之后它会说如果你选择了 per,如果你已经选择了 calc,那么你就不会了,所以它打印出了 else 语句。 (如果这有意义,如果没有,我可以尝试更好地解释它)。

【讨论】:

  • 知道了,谢谢 :)
【解决方案2】:

要比较字符串,请使用equals 而不是==

举例:

if(des.equals("calc") || des.equals("calculator"))

而不是

if(des=="calc" || des=="calculator")

总之,

== 的使用:您想知道两个引用是否指向同一个对象。

使用equals :比较值是否相等。

【讨论】:

  • 你能给我举个例子吗?谢谢
  • 这个答案有一个例子......
  • 伙计们,它工作了非常感谢,但最后仍然会在程序终止时显示 else 结果
  • 我更新了答案。检查为什么equals 不是==,不客气。如果您找到完整的帮助,请接受答案。
  • 我也应该在 char 中使用 equals 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 2015-09-12
相关资源
最近更新 更多