我遇到一个问题,我想用它来读取完整的字符行。
首先,我为我的方法使用以下包:
package chararray;
import java.util.*;
import java.util.regex.*;
import java.text.*;
public class Console
{
private static Scanner sc;
private Console()
{
}
public static char[] readCharArray()
throws NoSuchElementException, IllegalStateException
{
sc = new Scanner(System.in);
String text = sc.nextLine();
return text.toCharArray();
}
}
这就是我包含该软件包的主要代码。我的编译器(BlueJ)告诉我:“不兼容的类型 - 找到char []但是期望的char”。但通常我的方法应该适用于char []?我在这里做错了什么建议?
import chararray.Console;
public class kundenverwaltung
{
public static void main (String args[])
{
int nk;
System.out.print("Wie viele Kunden möchten Sie erfassen?: ");
nk = Console.readInt();
char [][] kundenregister;
kundenregister = new char [nk][4];
for (int i = 0; i < nk; ++i)
{
System.out.print("Kundennummer: ");
kundenregister [i][0] = Console.readCharArray();
System.out.print("Name des Kunden: ");
kundenregister [i][1] = Console.readCharArray();
System.out.print("Vorname des Kunden: ");
kundenregister [i][2] = Console.readCharArray();
System.out.print("Adresse des Kunden: ");
kundenregister [i][3] = Console.readCharArray();
}
}
}
答案 0 :(得分:2)
看看这一行:
kundenregister[i][0] = Console.readCharArray();
表达式kundenregister[i][0]
引用char
变量 - 不是char数组。
目前尚不清楚你要做什么 - 特别是为什么你需要将值作为字符数组而不是字符串 - 但这会使它工作:
char[][][] kundenregister = new char[nk][4][];
拥有一个三维数组几乎总是一个错误。我强烈建议您将代码重构为:
char
数组List<Customer>
或其他......可能使用ArrayList<T>
作为实现。然后你甚至不需要事先了解客户的数量......用户可以点击返回(或其他任何)来表明他们已经完成了。答案 1 :(得分:1)
您的变量kundenregister
被声明为字符数组的数组。这意味着对于每个x和y,kundenregister[x][y]
是单个字符(第x个字符数组的第y个字符)。但是你试图为它分配一整套字符。
我不确定你的目标是什么,所以我不能建议一个简单的解决方案。您要么将结果分配给某个索引kundenregister
,要么将kundenregister
声明为三维数组。
答案 2 :(得分:1)
我不确定你在这里尝试做什么,所以我无法提供完整的解决方案,但导致错误的直接问题出在你的kundenverwaltung
类中,在for循环中。 / p>
您正在尝试将Console.readCharArray()分配给kundenregister[i][0]
,因为Console.readCharArray()返回char[]
,而kundenregister[i][0]
属于char
,因此发生类型不匹配的地方输入kundenregister
。
为了帮助您理解这一点:kundenregister[i][0]
本质上是一个二维网格,其中每个插槽都是一个字符。 kundenregister[i][2] = x
指的是其中一个广告位,因此当您编写x
时,{{1}}必须是字符,否则它将无效。