【发布时间】:2014-06-19 21:31:50
【问题描述】:
我想将多个字符串保存在一个中。问题是,我不知道它可能有多少个字符串。 我正在创建一个程序,它从文本文件中读取卡路里并将它们存储在相应的数组中。
以下是部分文字:
Description of food Fat Food Energy Carbohydrate Protein Cholesterol Weight Saturated Fat
(Grams) (calories) (Grams) (Grams) (Milligrams) (Grams) (Grams)
APPLES, RAW, PEELED, SLICED 1 CUP 0 65 16 0 0 110 0.1
APPLES, RAW, UNPEELED,2 PER LB1 APPLE 1 125 32 0 0 212 0.1
APPLES, RAW, UNPEELED,3 PER LB1 APPLE 0 80 21 0 0 138 0.1
APRICOT NECTAR, NO ADDED VIT C1 CUP 0 140 36 1 0 251 0
现在对于食物名称,我有一个数组 foodName。我将阅读整个字符串,直到达到一个 int 值。
这是我到目前为止所做的:
Scanner input = new Scanner("Calories.txt");
while (input.hasNext()) {
String[] words = input.next().split(" ");
int lastI;
for (int i=0; i < words.length; i++) {
if (isNumeric(words[i])) {
lastI = i;
for(int j=lastI; j>=0; j++){
//What should I put here?
}
}
}
}
public static boolean isNumeric(String str) {
try {
double d = Double.parseDouble(str);
} catch (NumberFormatException nfe) {
return false;
}
return true;
}
对于最里面的 for 循环,我记录了最后一个索引,这样我就可以从它开始并向后移动。
问题1:如果我在第二行倒退,我会复制这两行。
问题2:如何将名称的所有字符串保存在foodName的一个索引中?
感谢所有帮助:)
【问题讨论】:
-
查看
StringBuilder类。它可能是你想要的。 -
你能改变文件的格式吗?通常在使用平面文件时,您会希望使用标准格式,例如 CSV(逗号分隔值)文件。这样您就可以在每个逗号上进行拆分。然后循环遍历数组中的每个值,直到找到一个数字,然后移动到下一行。
-
for(int j=lastI; j>=0; j++)这是一个非常糟糕的主意。另外,您的问题似乎不清楚。你到底想要什么作为一个字符串?你的意思是一个字符串数组还是一个字符串?该文件示例的格式是否准确? -
我想要一串食物名称的多串。 say foodName[0] = "苹果,生的,去皮的,切片的";是的。