Java 将多个字符串保存为一个字符串

Java 将多个字符串保存为一个字符串,java,string,file,Java,String,File,我想在一个文件中保存多个字符串。问题是,我不知道它可能有多少个字符串。 我正在创建一个程序,从文本文件中读取卡路里并将其存储在相应的数组中 以下是部分文本: Description of food Fat Food Energy Carbohydrate Protein Cholesterol Weight Saturated Fat (Grams)

我想在一个文件中保存多个字符串。问题是,我不知道它可能有多少个字符串。 我正在创建一个程序,从文本文件中读取卡路里并将其存储在相应的数组中

以下是部分文本:

 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。我将读取整个字符串,直到我达到一个整数,即数量

以下是我迄今为止所做的工作:

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;
}
扫描仪输入=新扫描仪(“carries.txt”);
while(input.hasNext()){
String[]words=input.next().split(“”);
内拉斯蒂;
for(int i=0;i=0;j++){
//我应该在这里放什么?
}
}
}
}
公共静态布尔值isNumeric(字符串str){
试一试{
double d=double.parseDouble(str);
}捕获(NumberFormatException nfe){
返回false;
}
返回true;
}
对于最内部的for循环,我跟踪最后一个索引,这样我就可以从它开始向后走

问题1:如果我在第二行向后走,我将复制两行

问题2:如何将名称的所有字符串保存在foodName的一个索引中


非常感谢您提供的所有帮助:)

您在Java中寻找的东西称为
StringBuilder
。您可以像使用字符串一样使用它,并继续附加到它上

File file = new File("output.txt");
Scanner input = new Scanner(file);
StringBuilder sb = new StringBuilder();
while (input.hasNextLine()) {
    String[] words = input.nextLine().split(" ");
    for (int i = 0; i < words.length; i++) {
        if (isNumeric(words[i])) {
            break;
        }
        sb.append(words[i] + " ");
    }
    System.out.println(sb);
    sb = new StringBuilder();
}
input.close();

您在Java中寻找的称为
StringBuilder
。您可以像使用字符串一样使用它,并继续附加到它上

File file = new File("output.txt");
Scanner input = new Scanner(file);
StringBuilder sb = new StringBuilder();
while (input.hasNextLine()) {
    String[] words = input.nextLine().split(" ");
    for (int i = 0; i < words.length; i++) {
        if (isNumeric(words[i])) {
            break;
        }
        sb.append(words[i] + " ");
    }
    System.out.println(sb);
    sb = new StringBuilder();
}
input.close();

您在Java中寻找的称为
StringBuilder
。您可以像使用字符串一样使用它,并继续附加到它上

File file = new File("output.txt");
Scanner input = new Scanner(file);
StringBuilder sb = new StringBuilder();
while (input.hasNextLine()) {
    String[] words = input.nextLine().split(" ");
    for (int i = 0; i < words.length; i++) {
        if (isNumeric(words[i])) {
            break;
        }
        sb.append(words[i] + " ");
    }
    System.out.println(sb);
    sb = new StringBuilder();
}
input.close();

您在Java中寻找的称为
StringBuilder
。您可以像使用字符串一样使用它,并继续附加到它上

File file = new File("output.txt");
Scanner input = new Scanner(file);
StringBuilder sb = new StringBuilder();
while (input.hasNextLine()) {
    String[] words = input.nextLine().split(" ");
    for (int i = 0; i < words.length; i++) {
        if (isNumeric(words[i])) {
            break;
        }
        sb.append(words[i] + " ");
    }
    System.out.println(sb);
    sb = new StringBuilder();
}
input.close();

查看
StringBuilder
类。这可能是您想要的。您能更改文件的格式吗?在使用平面文件时,通常需要使用标准格式,例如CSV(逗号分隔值)文件。这样,您可以在每个逗号上拆分。然后循环遍历数组中的每个值,直到找到一个数字,然后移到下一行。
for(int j=lastI;j>=0;j++)
这是一个非常糟糕的主意。另外,你的问题似乎不清楚。你到底想要什么作为一个字符串?你是指字符串数组还是单个字符串?那个文件示例是如何格式化的吗?我希望在一个字符串中包含食物名称的多个字符串。说foodName[0]=“苹果,生的,去皮的,切片的”;是的。请查看
StringBuilder
类。这可能是您想要的。您能更改文件的格式吗?在使用平面文件时,通常需要使用标准格式,例如CSV(逗号分隔值)文件。这样,您可以在每个逗号上拆分。然后循环遍历数组中的每个值,直到找到一个数字,然后移到下一行。
for(int j=lastI;j>=0;j++)
这是一个非常糟糕的主意。另外,你的问题似乎不清楚。你到底想要什么作为一个字符串?你是指字符串数组还是单个字符串?那个文件示例是如何格式化的吗?我希望在一个字符串中包含食物名称的多个字符串。说foodName[0]=“苹果,生的,去皮的,切片的”;是的。请查看
StringBuilder
类。这可能是您想要的。您能更改文件的格式吗?在使用平面文件时,通常需要使用标准格式,例如CSV(逗号分隔值)文件。这样,您可以在每个逗号上拆分。然后循环遍历数组中的每个值,直到找到一个数字,然后移到下一行。
for(int j=lastI;j>=0;j++)
这是一个非常糟糕的主意。另外,你的问题似乎不清楚。你到底想要什么作为一个字符串?你是指字符串数组还是单个字符串?那个文件示例是如何格式化的吗?我希望在一个字符串中包含食物名称的多个字符串。说foodName[0]=“苹果,生的,去皮的,切片的”;是的。请查看
StringBuilder
类。这可能是您想要的。您能更改文件的格式吗?在使用平面文件时,通常需要使用标准格式,例如CSV(逗号分隔值)文件。这样,您可以在每个逗号上拆分。然后循环遍历数组中的每个值,直到找到一个数字,然后移到下一行。
for(int j=lastI;j>=0;j++)
这是一个非常糟糕的主意。另外,你的问题似乎不清楚。你到底想要什么作为一个字符串?你是指字符串数组还是单个字符串?那个文件示例是如何格式化的吗?我希望在一个字符串中包含食物名称的多个字符串。说foodName[0]=“苹果,生的,去皮的,切片的”;是的。任何时候,我都很高兴能帮上忙!任何时候,我都很高兴能帮上忙!任何时候,我都很高兴能帮上忙!任何时候,我都很高兴能帮上忙!