我最近开始学习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语句中做了这个,它也在做同样的事情。我不知道如何防止这种方式的代码。我做错了什么但我不知道什么是问题
答案 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
即可