2014-03-19 110 views
1

这可能非常简单,但是我已经完全清空并且会感激一些指针。我正在创建一个小型游戏,我们已经分配了我们选择数字的地方,然后提供了一个目标数字来尝试使用我们选择的数字。在我的while循环中,一旦我的条件达到6,它会要求用户生成目标编号,但是一旦它们再次打印相同的字符串“生成最终字符串”,我该如何只打印一次?在while循环中只打印一次语句

这是代码,如果它会帮助。

while (lettersSelected == false) { 

      if (finalNum.size() == 6) { 
       System.out.println("3. Press 3 to generate target number!"); 

      } // Only want to print this part once so it does not appear again. 


      Scanner input = new Scanner(System.in); 

      choice = input.nextInt(); 

      switch (choice) { 
      case 1: 
       if (finalNum.size() != 6) { 
        largeNum = large.get(r.nextInt(large.size())); 
        finalNum.add(largeNum); 
        largeCount++; 
        System.out.println("Numbers board: " + finalNum + "\n"); 
       } 

       break; 
+0

不能你根本在周期之前把它放在外面? – noidraug

+0

也许我误解了一些东西,但是为什么不在错误值的前面声明布尔值,在if中检查它并在输入if语句时将其设置为true? – user2424380

回答

0

它可以很容易地完成。

boolean isItPrinted = false; 

while (lettersSelected == false) { 

      if ((finalNum.size() == 6) && (isItPrinted == false)) { 
       System.out.println("3. Press 3 to generate target number!"); 
       isItPrinted = true; 
      } 
0

首先满足条件if (finalNum.size() == 6),然后打印字符串。但是,在while循环的下一次迭代过程中,finalNum的大小没有改变,因为在交换机的case 1中检查了相反的条件,并且大小在这两个语句之间的任何地方都没有改变。

0

您可以添加一个标志变量并将其设置为true,在if contidion添加一个检查该变量,如果输入了if-clause,变量设置为false

boolean flag = true; 

while (lettersSelected == false) { 

    if (finalNum.size() == 6 && flag) { 
     System.out.println("3. Press 3 to generate target number!"); 
     flag = false; 
    } 

    // ... 
}