的System.out.println();打印两行

时间:2017-12-07 06:54:10

标签: java

我最近开始学习Java,我已经遇到了第一个问题。目前我正在制作一个文本冒险游戏(用Java编写),我无法继续,因为该程序打印出两行,但我不想这样做。我不知道如何才能打印出一行。

在程序的最后一位有一个system.out.print(“你好”)

import java.util.Scanner;

public class TextAd2 {

Scanner sc = new Scanner(System.in);

//Name
String Pname;

public static void main(String[] args) {

    //connection
    TextAd2 con;
    con = new TextAd2();

    con.info();
    con.start1();
}

public void info() {

System.out.println("Hello!");
System.out.println("Your Name? ");
Pname = sc.nextLine();

System.out.println("Hello " + Pname);
System.out.println("Wana Start The Game or Stop?");
String text1 = sc.nextLine();

    switch (text1) {
    case "Start":
        start1();
        break;

    case "Stop":
        System.exit(0);
        break;
    default:
        System.out.println("Unknown Command.");
    }
}
public void start1()
{
    //it starts to print this twice
    System.out.println("hello");
}
}

我实际上不认为system.out.print是问题,也许程序只是读取'start1()'两次,这就是为什么它打印“hello”两次。我在if else语句中做了这个,它也在做同样的事情。我不知道如何防止这种方式的代码。我做错了什么但我不知道什么是问题

2 个答案:

答案 0 :(得分:2)

您可以拨打两次con.start1();

进入main()

con.info();
con.start1();

第二次来自switch

   case "Start":
        start1();
        break;

答案 1 :(得分:1)

首先,执行到达这一行:

con.info();

所以info开始运行。然后执行到达:

case "Start":
    start1();
    break;

所以start1开始执行并打印Hello

但是,请记住最深的调用堆栈仍在info方法上。打印Hello后,start1返回,它将从调用堆栈中弹出。 break;然后运行,info也会从调用堆栈中弹出。现在,我们将转到info()之后的下一行,即start1

这就是它打印两次的原因。要停止此操作,只需从start1方法

中删除main即可