교수형 집행 프로그램을 만들려고합니다 ... 다른 문제와 함께 찾을 수 없거나 찾을 수없는 방법을 만들어서 찾을 수없는 경우 발견 된 모든 문자를 대체하십시오. findAndReplace() 메서드를 사용하여이 문제를 해결하려고 노력하고 있습니다 ... 작동하지 않았습니다. 사람은 새 것으로 StringBuilder
교체 나에게 다음StringBuilder 개체에서 문자가 두 번 이상 발견되는 경우
public class Hangman {
static Scanner sc = new Scanner(System.in);
static final int MAXTRYS = 10;
static int numError = 0;
static boolean FINSHED = false;
String s;
String input;
String tW;
int pos;
public static void main(String[] args) {
System.out.println("Welcome to the Hangman App" + "\n");
String s = answerKey();
StringBuilder AnswerKey = dashReplace(s);
while(!FINSHED && numError < MAXTRYS){
//get user input and cast to char
System.out.println("Enter an Letter: ");
String input = sc.nextLine();
char ch = input.charAt(0);
int pos = findAndReplace(s, AnswerKey, input, ch);
int index = AnswerKey.indexOf("-");
if(pos == -1){
numError++;
continue;
}else if(index == -1){
FINSHED = true;
System.out.println("you won!");
}
}
}
public static int findAndReplace(String s, StringBuilder AnswerKey,
String input, char ch) {
//find position of user input and replace
int pos = s.indexOf(input);
AnswerKey.setCharAt(pos, ch);
// while(pos > 0) {
// AnswerKey.setCharAt(pos, (char) (ch+1));
//}
System.out.println(AnswerKey);
return pos;
}
public static StringBuilder dashReplace(String s) {
//replace non-white space char with dashes and creates StringBuilder Object
String tW = s.replaceAll("\\S", "-");
System.out.print(tW + "\n");
StringBuilder AnswerKey = new StringBuilder(tW);
return AnswerKey;
}
public static String answerKey() {
//get random array element
String array[] = new String[10];
array[0] = "Hamlet";
array[1] = "Mysts of Avalon";
array[2] = "The Iliad";
array[3] = "Tales from Edger Allan Poe";
array[4] = "The Children of Hurin";
array[5] = "The Red Badge of Courage";
array[6] = "Of Mice and Men";
array[7] = "Utopia";
array[8] = "Chariots of the Gods";
array[9] = "A Brief History of Time";
ArrayList<String> list = new ArrayList<String>(Arrays.asList(array));
Collections.shuffle(list);
String s = list.get(0);
//for testing
System.out.println(s);
return s;
}
}
정말 고맙습니다. 한 번에 두 가지 문제를 해결하고 매우 감사하게 생각합니다. – Sage1216