2

我现在正在开发一个刽子手应用程序。我现在正在编程,目前正在尝试用用户输入( )替换tW位置( )中的破折号,然后存储数组......我找不到问题,它让我发疯!请有人帮助我?posinput

public static void main(String[] args) {
    //get random array element
    System.out.println("Welcome to the Hangman App");
    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);


    //replace non-white space char with dashes
    String tW = s.replaceAll("\\S", "-");   

    //get user input
    System.out.println("Enter an Letter: ");
    String input = sc.next();

    //find position of user input and replace
    int pos = s.indexOf(input);
    char ch = input.charAt(pos);
    char[] answer = tW.toCharArray();
    //answer[pos] = input;

    //test 
    System.out.println(answer);


}
4

3 回答 3

0

问题是您试图pos从输入的字母String而不是从String数组中选择的字母中检索位置处的字符。代替

char ch = input.charAt(pos);

char ch = s.charAt(pos);
于 2013-05-04T17:10:06.393 回答
0

您的代码中有几个问题。尝试以下操作以继续:

package com.sandbox;

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

public class Sandbox {

    public static void main(String[] args) {

        // get random array element
        System.out.println("Welcome to the Hangman App");
        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);

        // replace non-white space char with dashes
        StringBuilder tW = new StringBuilder(s.replaceAll("\\S", "-"));

        // get user input
        System.out.println("Enter an Letter: ");

        Scanner sc = new Scanner(System.in);

        while (tW.indexOf("-") >= 0) {

            String input = sc.next();
            char c = input.charAt(0);

            // find position of user input and replace
            int pos = s.indexOf(c);

            if (pos >= 0) {
                tW.setCharAt(pos, c);
                System.out.println(tW.toString());
            }

        }

        sc.close();

    }
}

随意将此解决方案与您的原始代码进行比较并进一步改进它;-)

于 2013-05-04T17:15:54.757 回答
0
char inp = input.charAt(0);
//find position of user input and replace
char[] answer = tW.toCharArray();
for(int i = 0; i < answer.length; i++){
    if(s.charAt(i) == inp)
        answer[i] = inp;
}

现在它正在工作,但只适用于一个角色。你应该用while循环封装它,即

int numError = 0;
int maxError = a_number; 
boolean finished = false; 
while(!finished && numError < maxError){
    do_all_the_things_you_are_doing_now;

    if(ch is not exist in answer)
        numError++;

    else{
        if(there is no "_" in answer)
             finished = true;
    }
}
于 2013-05-04T17:24:19.593 回答