2015-03-14 2 views
0

У меня есть вопрос относительно сравнения символов внутри массива с конкретным входом, который является строкой.Java - Как сравнить Char [] Массив со строкой?

У меня, похоже, проблема, когда она заявляет: String [] oneRow = алфавит [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(); 
} 

Затмения говорит:

Несоответствие типа: не удается преобразовать из полукокса в строку []

Спасибо за вашу помощь!

M

+0

Вы сказали нам, что у вас есть проблема. Разум также описывает проблему? Сообщение об ошибке, что-нибудь? – Zavior

ответ

0

Назначение персонажа к String является недействительным. Вы можете использовать конкатенацию трюк, чтобы сделать это в любом случае, но это граничит с хака:

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

Лучше было бы проверить, что letter имеет длину 1, и что его единственный символ соответствует alphabet[i]:

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

@MieerDarwesh Да, весь цикл цикла заменяется этим выражением 'if'. 'matchedLetter' должен быть типа' char', а цикл в конце становится единственным выражением. Это ужасно много работы, чтобы проверить, было ли одно письмо введено, между прочим. – dasblinkenlight

+1

Спасибо! Я попробовал второй подход. Работал! –

+0

Это показывает, насколько важно это, какие атрибуты следует учитывать при написании кода для проверки этих атрибутов. Еще раз спасибо;) –

0

Вы не можете назначить один символ в массив String. Вы не могли бы назначить одну строку для массива; эта часть не имеет ничего общего с символами.

Конечно, вы не можете присвоить символ в строку непосредственно, либо, так что вы, вероятно, хотите что-то вроде этого:

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

if(oneRow.equals(letter)) 
-1

char несовместима с String и так 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) { ... } 
+0

большое спасибо! –

Смежные вопросы