Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用nextLine()后无法创建测试条件_Java - Fatal编程技术网

Java 使用nextLine()后无法创建测试条件

Java 使用nextLine()后无法创建测试条件,java,Java,可能重复: 我一直很难使用nextLine()获取字符串,然后将其用作测试条件(在if语句或while循环中)。查看println(),似乎字符串已正确分配给变量“repeat”,但由于某种原因,测试条件失败。我的头撞在墙上,额头流血。请帮忙 import java.util.Scanner; public class potpie { public static void main(String args[]){ Scanner input = new Scan

可能重复:

我一直很难使用nextLine()获取字符串,然后将其用作测试条件(在if语句或while循环中)。查看println(),似乎字符串已正确分配给变量“repeat”,但由于某种原因,测试条件失败。我的头撞在墙上,额头流血。请帮忙

import java.util.Scanner;

public class potpie {

    public static void main(String args[]){

        Scanner input = new Scanner(System.in);
        String repeat = "yes";


        System.out.println("Type in yes");
        repeat = input.nextLine();
        System.out.println("If repeat is now yes, print yes:  " +repeat);

        if(repeat == "yes"){
            System.out.println("It worked");
        } else
            System.out.println("it failed");
    }
}
应该是

if(repeat.equals("yes"){
(或)

每天我们都会多次看到这个问题,简单的搜索可以为您提供足够的信息

=
equals用于原语比较(参考等式)
equals()
用于字符串(或)对象比较(对象内容相等)

应该是

if(repeat.equals("yes"){
(或)

每天我们都会多次看到这个问题,简单的搜索可以为您提供足够的信息


=
equals用于原语比较(参考等式)
equals()
用于字符串(或)对象比较(对象内容相等)。

您应该使用equals
=
为您提供参考等式,
equals
为您提供值等式

if("yes".equals(repeat)){ 
而不是

if(repeat == "yes"){

我建议您获取eclipse/netbean并开始调试,否则简单的搜索就会得到答案


您应该使用equals
=
为您提供参考等式,
equals
为您提供值等式

if("yes".equals(repeat)){ 
而不是

if(repeat == "yes"){

我建议您获取eclipse/netbean并开始调试,否则简单的搜索就会得到答案


有时==应该用于对象,但它实际比较的是a和b是否确实是同一个对象(在内存中有相同的地址)。正如其他人所说,在这种情况下,您是在比较内容,因此您使用.equals()

有时==应该用于对象,但它实际比较的是a和b是否是字面上相同的对象(在内存中具有相同的地址)。正如其他人所说,您在这种情况下比较内容,因此使用.equals()

这是Java中最常见的问题之一。请做一些研究,因为它已经被回答了很多次。使用if(repeat.equalsIgnoreCase(“yes”))代替这是Java中最常见的问题之一。请做一些研究,因为它已经被回答了很多次。使用if(repeat.equalsIgnoreCase(“yes”)代替yes,但有时很难知道要搜索什么。我有点不同意。在这种情况下,谷歌到底需要什么?实际上,我认为Java应该修复这个bug。是的,它会破坏一些写得不好的软件。可能是字符串相等吗?OP知道测试条件不合格。@JohnB我同意这种看法。另一方面,学习使用调试器是一项基本技能。在我看来,向某人提供调试技能方面的建议比告诉他们进行谷歌搜索(至少在这个特定的例子中)要好。当然。然而,如果您是该语言的新手,您可能不理解为什么
==
失败,并且可能不考虑引用相等,这取决于您来自哪里。Java中
==
运算符应用于字符串时的行为在逻辑上是完全一致的,但老实说,不是很有用。是的,但有时很难知道要搜索什么。我有点不同意。在这种情况下,谷歌到底需要什么?实际上,我认为Java应该修复这个bug。是的,它会破坏一些写得不好的软件。可能是字符串相等吗?OP知道测试条件不合格。@JohnB我同意这种看法。另一方面,学习使用调试器是一项基本技能。在我看来,向某人提供调试技能方面的建议比告诉他们进行谷歌搜索(至少在这个特定的例子中)要好。当然。然而,如果您是该语言的新手,您可能不理解为什么
==
失败,并且可能不考虑引用相等,这取决于您来自哪里。Java中
==
操作符应用于字符串时的行为在逻辑上是完全一致的,但老实说,不是很有用。