【问题标题】:Java - How to Compare Char[] Array with String?Java - 如何比较 Char[] 数组和字符串?
【发布时间】:2015-05-16 15:59:35
【问题描述】:

我有一个关于将数组中的字符与特定输入(字符串)进行比较的问题。

我似乎在它声明的行有问题:String[] oneRow = alphabet[i];

package MemoryGame;

导入 java.util.Scanner;

公共类记忆{

/*
 * array list of the alphabet.
 */

char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

/*
 * Constructor
 */
public Memory(){

    /*
     * Scanner initiation for input end-user.
     */
    System.out.println("What is the first letter of you name? ");
    Scanner scan = new Scanner(System.in);
    String letter = scan.nextLine();
    String s = scan.nextLine();

    /*
     * Comparing Input with array
     */
    String[] matchedRow;
    for(int i=0; i<alphabet.length; i++)
    {           
        String[] oneRow = alphabet[i];

        if(oneRow[0].equals(letter))
        {
            matchedRow = oneRow;
            break;
        }
    }

    for(int i=0; i<matchedRow.length; i++)
    {
        System.out.println(matchedRow[i]);

    }
}

public static void main(String[] args) {
Memory memory = new Memory();   
}

Eclipse 说:

类型不匹配:无法从 char 转换为 String[]

感谢您的帮助!

M

【问题讨论】:

  • 您告诉我们您遇到了问题。介意描述问题吗?错误信息,什么?

标签: java string char type-conversion


【解决方案1】:

将字符分配给String 无效。无论如何,您都可以使用连接技巧来做到这一点,但这接近于黑客:

String[] oneLetter = ""+alphabet[i];

更好的方法是检查letter 的长度是否为1,并且它的唯一字符匹配alphabet[i]

if (letter.length() == 1 && letter.charAt(0) == alphabet[i]) {
    matchedLetter = alphabet[i];
    break;
}

【讨论】:

  • @MieerDarwesh 是的,循环的整个主体都被这个if 语句所取代。 matchedLetter 需要是char 类型,最后的循环变成了一条语句。顺便说一句,检查是否输入了一个字母是一项非常艰巨的工作。
  • 这显示了它的重要性,以及在编写代码来验证这些属性时要考虑哪些属性。再次感谢;)
【解决方案2】:

您不能将单个字符分配给字符串数组。您也不能将单个字符串分配给数组;那部分与字符无关。

当然,您也不能直接将 char 分配给 String,因此您可能想要这样的东西:

String onerow = String.valueOf(alphabet[i]);

if(oneRow.equals(letter))

【讨论】:

    【解决方案3】:

    charString 不兼容,因此String[]char[] 不兼容。

    alphabet[i]会返回一个char,你可以通过构造一个新的来将它转换成String,例如:

    char c = aplhabet[i];
    String oneRow = String.valueOf(c);
    if (oneRow.equals(letter)) { ... }
    

    或者,您可以将输入String 的第一个char 与您从alphabet 获取的char 进行比较:

    char c = aplhabet[i];
    if (letter.chartAt(0) == c) { ... }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 2012-02-14
      • 2012-08-14
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多