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;
}
char
与 String
不兼容,因此 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) { ... }
我有一个关于将数组中的字符与特定输入(字符串)进行比较的问题。
我似乎在它指出的那一行有问题: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;
}
char
与 String
不兼容,因此 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) { ... }