Java 固执己见

Java 固执己见,java,methods,Java,Methods,我不明白为什么这个方法从第一行直接到最后一行,而不运行中间的东西,很可能是非常简单的东西 public void addAdress() { System.out.println("Do you want to add " + this.getName() + "´s Adress?Y or N?"); afirmativeanswer = true; while (afirmativeanswer) { answer = input.nextLine(

我不明白为什么这个方法从第一行直接到最后一行,而不运行中间的东西,很可能是非常简单的东西

public void addAdress() {
    System.out.println("Do you want to add " + this.getName() + "´s Adress?Y or N?");
    afirmativeanswer = true;

    while (afirmativeanswer) {
        answer = input.nextLine();
        if (answer.equals("y")) {
            System.out.println("Enter " + this.getName() + "´s Adress!");
            answer = input.nextLine();
            this.setAdress(answer);
            afirmativeanswer = false;
        } else if (answer.equals("n")) {
            System.out.println("You choose not to add " + this.getName() + "´s Adress!");
            afirmativeanswer = false;
        } else {
            System.out.println("Please enter y or n");
        }
    }
}

勾选:
System.err.println(“”+answer+“”)紧跟在
answer=input.nextLine()之后

检查:
System.err.println(“““+answer+””)紧跟在
answer=input.nextLine()之后

使用
input.next()
而不是
input.nextLine()
原因是nextLine()方法将返回缓冲区中的下一行,因此它不会每次都要求您输入 有关更多信息,请查看扫描仪文档

使用
input.next()
而不是
input.nextLine()
原因是nextLine()方法将返回缓冲区中的下一行,因此它不会每次都要求您输入 有关更多信息,请查看扫描仪文档

无法输入任何内容,代码直接从第一个system.out.println运行到else Station的最后一个。第一行打印什么?这段代码应该可以工作。也许你的输入扫描仪有问题。你能再给一些代码吗?如果
input=newscanner(System.in)
,这段代码实际上是有效的。问题不在上述代码中。投票关闭。代码运行良好。。。(假设输入是新扫描仪(System.in)
)无法输入任何内容,代码直接从第一个System.out.println运行到else Station的最后一个。第一行打印什么?这段代码应该可以工作。也许你的输入扫描仪有问题。你能再给一些代码吗?如果
input=newscanner(System.in)
,这段代码实际上是有效的。问题不在上述代码中。投票关闭。代码运行良好。。。(假设输入是新扫描仪(System.in)
),这并不能回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-此外,执行
System.err.println(“““+answer+””)总是更安全的-
s将使空白或换行符问题在输出中更加明显。@Danielson它提供了一种方法来检测问题是什么(可能是哪里),因为代码可以工作,正如tucuxi所说。我同意printlns很好。。。并且有助于调试。。。您的答案更像是一个注释,因为它可以帮助调试问题,但它(本身)不是answerI did System.err.println(““+answer+””);就像你说的guilaume girod vitouchk和我在代码跳转到最后一个系统之前得到了两个红色的东西。out.println,这意味着什么?这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-此外,执行
System.err.println(“““+answer+””)总是更安全的-
s将使空白或换行符问题在输出中更加明显。@Danielson它提供了一种方法来检测问题是什么(可能是哪里),因为代码可以工作,正如tucuxi所说。我同意printlns很好。。。并且有助于调试。。。您的答案更像是一个注释,因为它可以帮助调试问题,但它(本身)不是answerI did System.err.println(““+answer+””);就像你说的,guilaume girod vitouchk和我在代码跳转到最后一个系统之前得到了这两个红色的东西。out.println,这意味着什么?不是真的,如果用户在每次输入后都按“enter”键,上面的代码在没有这些
next()
的情况下工作正常,这在控制台应用程序中是正常的行为。它与input.next()一起工作,虽然我不明白为什么我的代码中还有3个类似的方法,并且都可以很好地使用input.nextLine,但我甚至复制了上面的代码并粘贴到另一个程序中,它也运行得很好,所以问题解决了……但仍然很困惑!不正确,如果用户在每次输入后按“回车”键,上面的代码在没有这些
next()
的情况下可以正常工作,这是控制台应用程序中的正常行为。它与input.next()一起工作,尽管我不明白为什么我的代码中还有3个类似的方法,并且都与input.nextLine一起工作良好,我甚至复制了上面的代码并粘贴到另一个程序中,它也运行得很好,所以问题解决了……但仍然很困惑!