【问题标题】:Char Arrays comparison字符数组比较
【发布时间】:2013-12-13 15:14:32
【问题描述】:

我正在尝试构建类似刽子手的东西(适合初学者)

我试试这个:

int i = 0;
int fails = 0;
boolean success = false;
boolean retval;
char[] defineword = new char[] { 'h', 'u', 'n', 'g' };
char[] givenchar = new char[0];
char[] testchar = new char[] { 'h' };

while (success == false && fails < 5) {
    System.out.println("Give a char: ");
    String word = input.next(); // INPUT STRING
    givenchar = word.toCharArray(); // CONVERT

    retval = Arrays.equals(givenchar, testchar);
    System.out.println("THE LETTER IS " + retval);
    if (retval == true) {
        testchar[0] = defineword[i + 1];
    } else {
        fails++;
    }
}

问题是在字母('u')之后无法继续,卡在'u'中。

【问题讨论】:

  • 1) 标题中无需添加主要标签。 2) 为了尽快获得更好的帮助,请发帖SSCCE
  • 你的代码有很多问题,所以没有一个简单的答案。

标签: java arrays char


【解决方案1】:

我要说的一个观察是,您唯一真正的比较是在 givenchartestchar 之间。

retval = Arrays.equals(givenchar, testchar);

一旦您通过u,这将是有道理的,因为testchar 也永远不会通过u。我想您可能打算在某处添加i++

testchar[0] = defineword[i + 1];

【讨论】:

  • @Vulcan,这里的问题是i 没有更新以反映新状态。
【解决方案2】:
package mer;
import java.util.Scanner;
public class Aswe
{
 int i=0;
 int f=0;
 boolean suc=false;
 boolean ret;
 char[] dw=new char[]{'h','u','n','g'};
 char[] gc=new char[0];
 char[] tc=new char[]{'h'};
 Scanner i1;
 public void me()
  {
   i1=new Scanner(System.in);
   while(suc==false&&f<5)
    {
      System.out.println("give a char");
      String ch=i1.nextLine();

      gc=ch.toCharArray();

      ret=eual(gc,tc);
      System.out.println("the letter is"+ret);

      if(ret)
       {
         tc[0]=dw[i+1];
       }
     else
      f++;
 }
}
public boolean eual(char[] a,char[] b)
{
   if(a[0]==b[0])
    return true;
   else
    return false;
}
  public static void main(String ... args)
 {
   new Aswe().me();
 }
}

【讨论】:

    【解决方案3】:
    private int fails = 0;
    private final int maxFails = 5;
    
    private char[] answer = new char[] {'j','a','v','a'};
    
    public Hangman() {
    
        Scanner scan = new Scanner(System.in);
    
        /*
         * Game Loop
         */
        while(fails < maxFails){
            System.out.print("Enter a char: ");
            char givenChar = scan.next().charAt(0);
            System.out.println("Given char is: " + Check(answer,givenChar));
        }
    }
    
    /*
     * Check if the char exists in the array.
     */
    private boolean Check(char[] array,char value){
    
        for(int i = 0; i < array.length; i++){
            if(array[i] == value){
                return true;
            }
        }
    
        /*
         * Okay did not find any char that match return false.
         */
        return false;
    }
    

    【讨论】:

    • 我会推荐使用面向对象编程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多