2013-05-04 20 views
2

我正在开发一个hang子手应用程序。我现在正在编程,并试图在此刻用位置(pos)用用户输入(input)替换tW中的一个短划线,然后存储该数组...我找不到问题,并且它让我疯狂! !请有人帮助我?用用户输入替换短划线,然后存储

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); 


} 
+1

不知道是否有更多的错误封装它,但你怪的输出是由于'的System.out.println(答案);'和'的System.out更换。 println(新字符串(答案));' – jlordo 2013-05-04 16:53:32

+0

这条线是干什么用的? char ch = input.charAt(pos); ch从未在代码 – 2013-05-04 16:58:17

+0

中使用我认为你没有在这里给出你的整个代码。例如。当有多个角色出现时会发生什么? – Bill 2013-05-04 17:00:05

回答

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; 
    } 
} 
0

的问题是,你正试图从进入,而不是从阵列选定StringString检索在pos位置的字符。更换

char ch = input.charAt(pos); 

在你的代码
char ch = s.charAt(pos); 
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(); 

    } 
} 

随意这一解决方案进行比较,以你的原代码,并进一步提高其;-)

相关问题