当我将值输入为50时,java代码工作,而不是当我为suncondition提供值时

mhd8tkvw  于 2021-06-26  发布在  Java
关注(0)|答案(2)|浏览(248)

这个问题在这里已经有答案了

如何比较java中的字符串(23个答案)
两天前关门了。
用于用户输入的扫描仪,在为suncondition提供值时,很难进入if循环

@SuppressWarnings("resource")
Scanner temp = new Scanner(System.in);
int temperature;
System.out.print("Enter the temperature : ");
temperature=temp.nextInt();
@SuppressWarnings("resource")
Scanner suncon= new Scanner(System.in);
String suncondition;
System.out.print("Enter the Sun condition : ");
suncondition=suncon.nextLine();

if ((temperature==50) || (suncondition=="Sunny")){
    System.out.println(" This is tooo hot");
}
ds97pgxw

ds97pgxw1#

==如果它们引用的是内存中的同一个对象,则会进行比较,这里不是这种情况,因此将为false。
这里您可以使用equals方法,它基于字符串的数据/内容进行比较。

@SuppressWarnings("resource")
Scanner temp = new Scanner(System.in);
int temperature;
System.out.print("Enter the temperature : ");
temperature=temp.nextInt();
@SuppressWarnings("resource")
Scanner suncon= new Scanner(System.in);
String suncondition;
System.out.print("Enter the Sun condition : ");
suncondition=suncon.nextLine();

if ((temperature==50) || (suncondition.equals("Sunny"))){
    System.out.println(" This is tooo hot");
}

如果你想了解更多这是一个很好的文章
https://www.geeksforgeeks.org/java-equals-compareto-equalsignorecase-and-compare/#:~:text=in%20java%2c%20string%20equals(),matched%20then%20it%20returns%20false。

6ie5vjzr

6ie5vjzr2#

使用 .equals() 比较字符串。只使用 == 比较原语-比较类通常是比较引用。

@SuppressWarnings("resource")
Scanner temp = new Scanner(System.in);
int temperature;
System.out.print("Enter the temperature : ");
temperature=temp.nextInt();
@SuppressWarnings("resource")
String suncondition;
System.out.print("Enter the Sun condition : ");
suncondition=temp.nextLine();

if ((temperature==50) || (suncondition.equals("Sunny"))){
    System.out.println(" This is tooo hot");
}

另外,如果可以的话,不需要创建两个scanner对象。

相关问题