readCharArray()方法不起作用

时间:2010-12-11 19:36:21

标签: java

我遇到一个问题,我想用它来读取完整的字符行。

首先,我为我的方法使用以下包:

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();

        }      

    }

}

3 个答案:

答案 0 :(得分:2)

看看这一行:

kundenregister[i][0] = Console.readCharArray();

表达式kundenregister[i][0]引用char变量 - 不是char数组。

目前尚不清楚你要做什么 - 特别是为什么你需要将值作为字符数组而不是字符串 - 但这会使它工作:

char[][][] kundenregister = new char[nk][4][];

拥有一个三维数组几乎总是一个错误。我强烈建议您将代码重构为:

  • 使用字符串代替char数组
  • 将4个值封装到具有数字,名称,名字和地址属性的类型中
  • 创建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}}必须是字符,否则它将无效。