gpt4 book ai didi

java - 识别数组中未使用的字母

转载 作者:行者123 更新时间:2023-12-01 16:18:44 25 4
gpt4 key购买 nike

我正在用Java编写一个刽子手程序,但我遇到的问题是,在游戏中我想显示猜测的字母中剩余的字母,为此我创建了一个字符串alpha,其中包含字母表,并且我将其放入 ArrayList 中,这样我就可以选择玩家猜测的字母。但我陷入了困境,我想要得到的输出如下:并且我也附上了我为该函数编写的代码。

您还剩 6 个猜测。可用字母:abcdefghijklmnopqrstuvwxyz请猜一个字母:a

猜测不错:a_ _

您还剩 6 个猜测。可用字母:bcdefghijklmnopqrstuvwxyz

代码:

public String getRemainingLetters(String[] lettersGuessed) {

String alpha = "abcdefghijklmnopqrstuvwxyz";
String [] alpha2 = alpha.split("");
ArrayList<String> list = new ArrayList<>(Arrays.asList(alpha2));

return null;
// TODO: Fill in your code here
}

最佳答案

List#removeAll & String#join

如下所示使用它们来解决问题:

static String getRemainingLetters(String[] lettersGuessed) {
String alpha = "abcdefghijklmnopqrstuvwxyz";
String[] alpha2 = alpha.split("");
List<String> list = new ArrayList<>(Arrays.asList(alpha2));
List<String> toBeRemoved = new ArrayList<>(Arrays.asList(lettersGuessed));
list.removeAll(toBeRemoved);
return String.join("", list);
}

演示:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
public static void main(String[] args) {
// Tests
System.out.println(getRemainingLetters(new String[] { "a", "b", "c" }));
System.out.println(getRemainingLetters(new String[] { "d" }));
System.out.println(getRemainingLetters(new String[] { "x", "y", "z" }));
System.out.println(getRemainingLetters(new String[] { "x" }));
}

static String getRemainingLetters(String[] lettersGuessed) {
String alpha = "abcdefghijklmnopqrstuvwxyz";
String[] alpha2 = alpha.split("");
List<String> list = new ArrayList<>(Arrays.asList(alpha2));
List<String> toBeRemoved = new ArrayList<>(Arrays.asList(lettersGuessed));
list.removeAll(toBeRemoved);
return String.join("", list);
}
}

输出:

defghijklmnopqrstuvwxyz
abcefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvw
abcdefghijklmnopqrstuvwyz

交互式演示:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
StringBuilder consumed = new StringBuilder();
final int NO_OF_GUESSES = 6;
Scanner kb = new Scanner(System.in);
String guess;
for (int i = 1; i <= NO_OF_GUESSES; i++) {
System.out.println("Available letters: " + getRemainingLetters(consumed.toString().split("")));
System.out.print("Guess a letter: ");
guess = kb.nextLine();
consumed.append(guess.length() >= 1 ? guess.charAt(0) : "");
System.out.printf("You have %d chances left%n", NO_OF_GUESSES - i);
}
}

static String getRemainingLetters(String[] lettersGuessed) {
String alpha = "abcdefghijklmnopqrstuvwxyz";
String[] alpha2 = alpha.split("");
List<String> list = new ArrayList<>(Arrays.asList(alpha2));
List<String> toBeRemoved = new ArrayList<>(Arrays.asList(lettersGuessed));
list.removeAll(toBeRemoved);
return String.join("", list);
}
}

示例运行:

Available letters: abcdefghijklmnopqrstuvwxyz
Guess a letter: a
You have 5 chances left
Available letters: bcdefghijklmnopqrstuvwxyz
Guess a letter: x
You have 4 chances left
Available letters: bcdefghijklmnopqrstuvwyz
Guess a letter:

关于java - 识别数组中未使用的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62329830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com