需要数组,但Java.lang.string发现字符串错误

需要数组,但Java.lang.string发现字符串错误,java,Java,我正在尝试使用2D数组来创建JTable。为JTable中的列赋值时,我得到Java.lang.String found错误。变量的数据类型也是String,2D数组也是String类型 import java.io.*; import java.util.*; /** * Write a description of class PhoneBook here. * * @author (your name) * @version (a version number or a date) *

我正在尝试使用2D数组来创建JTable。为JTable中的列赋值时,我得到Java.lang.String found错误。变量的数据类型也是String,2D数组也是String类型

import java.io.*;
import java.util.*;
/**
* Write a description of class PhoneBook here.
* 
* @author (your name) 
* @version (a version number or a date)
*/
 public class PhoneBook 
{
static PhoneBookEntry contacts[] = new PhoneBookEntry[100];
int a=0;
int b[] = new int [100];
int count=0;
public void getData()throws IOException
{
    FileReader in = new FileReader("phonebookinput.txt");
    BufferedReader textreader = new BufferedReader(in);
    String sp[];
    for(a=0; a<contacts.length; a++)
    {
        String s = textreader.readLine();
        sp = s.split("\t");
        contacts[a] = new PhoneBookEntry(sp[0], sp[1], (Integer.parseInt(sp[2])), sp[3], sp[4]);
    }
}
public void add(String z, String x, int c, String d, String e)
{
    for (int t=0; t<b.length; t++)
    {
        if (contacts[b[t]].getNumber().equals("XXXX"))
        {
           contacts[b[t]] = new PhoneBookEntry(z, x, c, d, e);
        }

        else
       {
           contacts[a+1] = new PhoneBookEntry(z, x, c, d, e);
           a++;
       }
   }
}
   public int searchName(String n)
{
    int y=-1;
    for (int b=0; b<contacts.length;b++)
    {
        if (contacts[b].getFirstName().equalsIgnoreCase(n))
        {
            y=b;

        }
        else if (contacts[b].getLastName().equalsIgnoreCase(n))
        {
            y=b;

        }
    }
    return y;
}
public int searchNumber(String m)
{
    int x=-1;
    for(int d=0; d<contacts.length; d++)
    {
        if (contacts[d].getNumber().startsWith(m))
        {
            x=d;
        }
        else if (contacts[d].getNumber().endsWith(m))
        {
            x=d;
        }
    }
    return x;
}
public boolean edit(String a, String b, int c, String d, String e, String f)
{
    int g=searchName(f);
    int h=searchNumber(f);
    if (g!=-1)
    {
        contacts[g].setFirstName(a);
        contacts[g].setLastName(b);
        contacts[g].setAge(c);
        contacts[g].setNumber(d);
        contacts[g].setEmail(e);
        return true;
    }
    else if (h!=-1)
    {
        contacts[h].setFirstName(a);
        contacts[h].setLastName(b);
        contacts[h].setAge(c);
        contacts[h].setNumber(d);
        contacts[h].setEmail(e);
        return true;
    }
    else {return false;}
}
public void deleteValue(String u)
{
    int g=searchName(u);
    int h=searchNumber(u);
    if (g!=-1)
    {
        contacts[g].setFirstName("XXXX");
        contacts[g].setLastName("XXXX");
        contacts[g].setAge(-1);
        contacts[g].setNumber("XXXX");
        contacts[g].setEmail("XXXX");
        b[count]=g;
    }
    else if (h!=-1)
    {
        contacts[h].setFirstName("XXXX");
        contacts[h].setLastName("XXXX");
        contacts[h].setAge(-1);
        contacts[h].setNumber("XXXX");
        contacts[h].setEmail("XXXX");
        b[count]=h;
    }
    count = count + 1; 
}
public void sortFirstName()
{
    for (int r=99; r>=0; r--)
       {
           for (int h=0; h<=r-1; h++)
           {   
               if (contacts[h].getFirstName().compareTo(contacts[h+1].getFirstName())>0)
               {
                   String temp = contacts[h+1].getFirstName();
                   contacts[h+1].setFirstName(contacts[h].getFirstName());
                   contacts[h].setFirstName(temp);
                }
            }
    }
  }
public void sortLastName()
{
    for (int r=99; r>=0; r--)
       {
           for (int h=0; h<=r-1; h++)
           {   
               if (contacts[h].getLastName().compareTo(contacts[h+1].getLastName())>0)
               {
                   String temp = contacts[h+1].getLastName();
                   contacts[h+1].setLastName(contacts[h].getLastName());
                   contacts[h].setLastName(temp);
                }
            }
        }
    }
public void printDetails()
{
    String [] columnNames = {"First Name", "Last Name", "Age", "Phone Number", "Email"};
    String data [][] = new String [100][5];
    for (int u=0; u<data.length; u++)
    {
        String first = contacts[u].getFirstName();
        String last = contacts[u].getLastName();
        String age = Integer.toString(contacts[u].getAge());
        String number = contacts[u].getNumber();
        String email = contacts[u].getEmail();
        columnNames[u][0] = first;     //Here is where the error comes
        columnNames[u][1] = last;
        columnNames[u][2] = age;
        columnNames[u][3] = number;
        columnNames[u][4] = email;
    }
    JTable table = new JTable (data, columnNames);
    table.setEnabled(false);
}
import java.io.*;
导入java.util.*;
/**
*在这里写一个类电话簿的描述。
* 
*@author(你的名字)
*@version(版本号或日期)
*/
公共类电话簿
{
静态PhoneBookEntry联系人[]=新PhoneBookEntry[100];
int a=0;
int b[]=新int[100];
整数计数=0;
public void getData()引发IOException
{
FileReader in=newFileReader(“phonebookinput.txt”);
BufferedReader textreader=新的BufferedReader(in);
字符串sp[];

上面代码中的(a=0;acolumnNames)是一维字符串数组,但您试图将其用作二维数组

columnNames[u][0] = first;     //Here is where the error comes
我认为您的意思是将循环中的值分配给
数据
数组,而不是columnNames数组,如中所示

data[u][0] = first;

请正确格式化您的代码,并将其转换为一个最小的完整可验证示例:顺便说一句:
int b[]
是c风格的语法-去掉它。columnNames是一个简单的数组,在错误行上我希望看到数据,不是吗?