首页 > 解决方案 > 找到单词后如何从循环中中断

问题描述

我正在尝试创建一个刽子手,但我遇到了 2 个问题。

1)第一个问题是当用户找到单词时,循环并没有停止。

2)我有一个变量attempts可以知道尝试的次数。即使用户找到了字母,尝试的次数也会减少。

要找到的词是no

这是一个演示:

1) 我输入字母n

You have 5 attempts.
--
Enter your letter : n

2) 我输入字母o

The letter is good. 
You have 4 attempts.
n-
Enter your letter : o

3) 通常循环应该停止。

The letter is good. 
You have 3 attempts.
no
Enter your letter : 

如果您有任何想法,请提前感谢您。

Scanner input = new Scanner(System.in);

char letter = 0; 
String[] words = {/*"yes",*/ "no"}; 
String word_random = words[(int) (Math.random() * words.length)]; 
boolean[] word_found = new boolean[word_random.length()];
int attempts = 5;


while(attempts > 0){
  System.out.println("You have " + attempts + " attempts.");
  for(int i=0; i<word_random.length(); i++) {
    if ( word_found[i] ) {
      System.out.print(word_random.charAt(i));
    }
    else {
      System.out.print('-');
    }
  }

  System.out.println("");
  System.out.print("Enter your letter : ");
  letter = input.next().charAt(0);

  for(int i=0; i<word_random.length();i++){
    if(word_random.charAt(i) == letter){
      System.out.println("The letter is good. ");
      word_found[i] = true;
    } 

  }

attempts--;
   }
  }
}

标签: java

解决方案


您只是缺少一个检查循环或方法。检查下面的解决方案。

Scanner input = new Scanner(System.in);

char letter = 0; 
String[] words = {/*"yes",*/ "no"}; 
String word_random = words[(int) (Math.random() * words.length)]; 
boolean[] word_found = new boolean[word_random.length()];
int attempts = 5;

while(attempts > 0){
  System.out.println("You have " + attempts + " attempts.");
  for(int i=0; i<word_random.length(); i++) {
    if ( word_found[i] ) {
      System.out.print(word_random.charAt(i));
    }
    else {
      System.out.print('-');
    }
  }

  System.out.println("");
  System.out.print("Enter your letter : ");
  letter = input.next().charAt(0);

  for(int i=0; i<word_random.length();i++){
    if(word_random.charAt(i) == letter){
      System.out.println("The letter is good. ");
      word_found[i] = true;
    } 

  }

  boolean done = true;
  for(boolean b : word_found)
       done = done && b;

   if(done) break;
   else attempts--;

   }

推荐阅读