2017-12-07 10 views
-4

最近私はJavaを学び始めました。私はすでに最初の問題を抱えていました。現在、私はテキストアドベンチャーゲーム(Javaで書かれています)を作っています。プログラムは2行を出力しているが、私はそれが欲しくないので続行できません。私はそれが1行だけを印刷する方法はありません。多分プログラムの最後のビットでSystem.out.println(); 2行を印刷しています

私は実際にsystem.out.printに問題があるとは思わない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"); 
} 
} 

があり、プログラムは 'start1()'を2回読み込んでいるので、「hello」を2回印刷しています。私はこれをif else文で行い、同じことをやっています。私はこれを防ぐ方法のコードを知らない。私が何か間違ったことをやっているが、私は

+0

サイトがどのように動作しているか、そしてトピックに関する質問はこちら、[編集]あなたの質問に応じて。参照:[小さなプログラムをデバッグする方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/) –

+5

'start1()'を ' info() '関数とmain関数の中に1回あります。 – JJJ

+0

ありがとう、私はそれを動作させるために主な機能に接続する必要があると思った。 –

答えて

2

あなたが二回呼び出すことができますmain()に一度con.start1();

probelmが何であるかを知らない:あなたのswitch

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

目と2回目:

case "Start": 
     start1(); 
     break; 
1

最初は実行が次の行に達します。

con.info(); 

したがってinfoが実行を開始します。その後、実行は達し:

case "Start": 
    start1(); 
    break; 

のでstart1実行を開始し、プリントHello

ただし、最も深い呼び出しスタックは、まだinfoメソッドにあります。 Helloを印刷した後、start1が呼び出しスタックからポップされます。 break;が実行され、infoもコールスタックからポップします。さて、のinfo()の次の行に行きます。

だからこそ、それは2回印刷されています。これを止めるには、mainの方法からstart1を削除するだけです。

関連する問題