Java - 如何比较 Char[] 数组和字符串?

Java - How to Compare Char[] Array with String?

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

我似乎在它指出的那一行有问题:String[] oneRow = alphabet[i];

package MemoryGame;

进口java.util.Scanner;

public class内存{

/*
 * 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 说:

Type mismatch: cannot convert from char to String[]

感谢您的帮助!

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

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

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

if(oneRow.equals(letter))

将字符分配给 String 无效。无论如何,您都可以使用串联技巧来做到这一点,但这近乎于骇人听闻:

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

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

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

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

alphabet[i]将return变成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) { ... }