Java - 如何将Char []数组与String进行比较?

时间:2015-03-14 01:59:02

标签: java string char type-conversion

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

我似乎遇到了一个问题: String [] oneRow = alphabet [i];

package MemoryGame;

import java.util.Scanner;

public class Memory {

/*
 * 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 []

感谢您的帮助!

中号

3 个答案:

答案 0 :(得分:0)

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

当然,您也不能直接为字符串分配字符,因此您可能需要这样的内容:

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

if(oneRow.equals(letter))

答案 1 :(得分:0)

将字符分配给String无效。无论如何,您可以使用连接技巧来实现它,但这与黑客接壤:

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

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

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

答案 2 :(得分:-1)

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

alphabet[i]将返回char,您可以通过构建新的String将其转换为char c = aplhabet[i]; String oneRow = String.valueOf(c); if (oneRow.equals(letter)) { ... } ,例如:

char

或者,您可以将输入String的第一个char与您从alphabet获得的char c = aplhabet[i]; if (letter.chartAt(0) == c) { ... } 进行比较:

{{1}}