【发布时间】:2015-10-02 04:08:21
【问题描述】:
我正在尝试输出 ArrayList 的内容,但无论我尝试哪种方法,我似乎都得到了 Array 的位置而不是 Array 的内容。一起运行以下每一项都会给我:
run:
[[Ljava.lang.String;@55f96302, [Ljava.lang.String;@232204a1, [Ljava.lang.String;@4554617c, [Ljava.lang.String;@7f31245a, [Ljava.lang.String;@2503dbd3, [Ljava.lang.String;@5cad8086]
[Ljava.lang.String;@232204a1
[Ljava.lang.String;@232204a1
[Ljava.lang.String;@232204a1
这里是sn-p的代码:
// Each of the following approaches results in
// [Ljava.lang.String;@232204a1
// instead of the actual value of the ArrayList.
String test = accountNumbers.get(1);
System.out.println(test);
System.out.println(accountNumbers.get(1));
System.out.println(accountNumbers.get(1).toString());
// This actually outputs:
// [[Ljava.lang.String;@55f96302, [Ljava.lang.String;@232204a1, [Ljava.lang.String;@4554617c, [Ljava.lang.String;@7f31245a, [Ljava.lang.String;@2503dbd3, [Ljava.lang.String;@5cad8086]
String str = Arrays.toString(accountNumbers.toArray());
System.out.println(str);
我不确定是什么原因造成的。有没有办法让内容显示?
编辑:这是整个方法。另一个问题的答案 (here) 建议我尝试使用 ArrayList 而不是我使用的方法。我调整了这个建议,但我觉得这些问题最好放在一个新问题中,而不是作为对该问题的编辑。
protected static void loadAccountInformationFromFile() throws Exception
{
Scanner account = new Scanner(new File(INPUT_ACCOUNT_FILE)).useDelimiter(",");
int sortCount = 1;
List<String> accountNumbers = new ArrayList<>();
List<String> firstNames = new ArrayList<>();
List<String> lastNames = new ArrayList<>();
List<String> balances = new ArrayList<>();
List<String> lastVariables = new ArrayList<>();
do {
String[] temp1 = account.next().split(",");
String temp2 = "" + temp1;
if (sortCount == ACCOUNT_NUMBER_COUNT) {
accountNumbers.add(temp2);
} else if (sortCount == FIRST_NAME_COUNT) {
firstNames.add(temp2);
} else if (sortCount == LAST_NAME_COUNT) {
lastNames.add(temp2);
} else if (sortCount == BALANCE_COUNT) {
balances.add(temp2);
} else if (sortCount == LAST_VARIABLE_COUNT) {
lastVariables.add(temp2);
}
if (sortCount < MAX_VALUES_PER_LINE) {
sortCount++;
} else {
sortCount = 1;
}
} while (account.hasNext());
// Each of the following approaches results in
// [Ljava.lang.String;@232204a1
// instead of the actual value of the ArrayList.
String test = accountNumbers.get(1);
System.out.println(test);
System.out.println(accountNumbers.get(1));
System.out.println(accountNumbers.get(1).toString());
// This actually outputs:
// [[Ljava.lang.String;@55f96302, [Ljava.lang.String;@232204a1, [Ljava.lang.String;@4554617c, [Ljava.lang.String;@7f31245a, [Ljava.lang.String;@2503dbd3, [Ljava.lang.String;@5cad8086]
String str = Arrays.toString(accountNumbers.toArray());
System.out.println(str);
account.close();
// I want to adapt what I previously used to access the ArrayLists.
// Bank bank = new Bank();
//
// bank.openAccount(new CheckingAccount(10100, new Customer("Adam", "Apple"),500.00,false));
// bank.openAccount(new CheckingAccount(10101, new Customer("Beatrice", "Bagel"),2000.00,true));
// bank.openAccount(new SavingsAccount(2010, new Customer("Adam", "Apple"),5000.00,0.02));
}
编辑 2:以下是类变量:
private final static String INPUT_ACCOUNT_FILE = "accountInfo.txt";
private static final int ACCOUNT_NUMBER_COUNT = 0;
private static final int FIRST_NAME_COUNT = 1;
private static final int LAST_NAME_COUNT = 2;
private static final int BALANCE_COUNT = 3;
private static final int LAST_VARIABLE_COUNT = 4;
private final static int MAX_VALUES_PER_LINE = 5;
编辑 3: 为了那些可能阅读此问题较晚并被某些 cmets 对正确答案感到困惑的人的利益,我的部分问题与文本文件的问题有关本身。这是文本文件格式的示例:
10100,First,Last,Balance,value
10101,First,Last,Balance,value
20100,First,Last,Balance,value
另外:为了让 ArrayLists 存储正确的字符串,我必须从以下位置更改 sortCount:
int sortCount = 1;
到
int sortCount = 0;
因为当它设置为 1 时,它会将名字存储在帐号字符串中。
【问题讨论】:
-
您的 accountNumbers 实例是什么?列表?你的代码对我来说很好
-
System.out.println(Arrays.toString(accountNumbers.get(1)))? -
索引位置是任意的。我只是想从 ArrayList 中访问任何索引位置。
-
@d1x 也许问题出在代码的其他地方?我用整个方法编辑了这个问题,以澄清发生了什么。
-
我发布了一个我认为可能是您的问题的答案。您可以将文件的一部分作为示例发布吗?