[英]Identifying Unused Letters from an array
我正在 Java 中編寫一個劊子手程序,但我遇到的問題是,在游戲中我想顯示猜測的字母中的剩余字母,為此我創建了一個包含字母的字符串 alpha,我把它到 ArrayList,這樣我就可以選擇玩家猜測的字母。 但我被困在這一點上,我想得到的輸出如下:我還附上了我為 function 編寫的代碼。
你還有 6 個猜測。 可用字母:abcdefghijklmnopqrstuvwxyz 請猜一個字母: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
}
在這里,您可以對其進行美化並及時檢查錯誤:)
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
public static List < String > getRemainingLetters (ArrayList < String >
lettersGuessed)
{
String alpha = "abcdefghijklmnopqrstuvwxyz";
String[] alpha1 = alpha.split ("");
ArrayList < String > alpha2 = new ArrayList <> (Arrays.asList (alpha1));
for (int i = 0; i < lettersGuessed.size (); i++)
{
for (int j = 0; j < alpha2.size (); j++)
{
if (alpha2.get (j).equals (lettersGuessed.get (i)))
{
alpha2.remove (j);
break;
}
}
}
return alpha2;
}
public static void main (String[]args)
{
int numGuesses = 10;
String w = "this";
String[]word = w.split ("");
ArrayList < String > wList = new ArrayList <> (Arrays.asList (word));
ArrayList < String > wAnswer = new ArrayList < String > (wList.size ());
for (int i = 0; i < wList.size (); i++)
{
wAnswer.add ("_ ");
}
int left = wList.size();
Scanner scanner = new Scanner (System.in);
boolean notDone = true;
ArrayList < String > lettersGuessed = new ArrayList < String > ();
while (notDone)
{
System.out.println ();
String sOut = "";
List < String > lettersLeft = getRemainingLetters (lettersGuessed);
for (String s:lettersLeft)
{
sOut += s + " ";
}
System.out.println ("Letters Left: " + sOut );
sOut = "";
for (int i = 0; i < wList.size (); i++)
{
sOut += wAnswer.get (i);
}
System.out.println (sOut + " Guesses left:" + numGuesses);
System.out.print ("Enter a letter(* exit): ");
String sIn = scanner.next ();
numGuesses--;
if (sIn.equals ("*")){
break;
}
lettersGuessed.add (sIn);
for (int i = 0; i < wList.size (); i++)
{
if (sIn.equals (wList.get (i)))
{
wAnswer.set (i, sIn);
left--;
}
}
if(left == 0){
System.out.println ("Congradulations you guessed it!");
break;
}
if(numGuesses == 0){
System.out.println ("You failed...:(");
break;
}
}
}
}
如下所示使用它們來解決問題:
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);
}
}
Output:
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:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.