【问题标题】:Keeping first column in CSV but shifting the second column up one (JAVA) [closed]将第一列保留在 CSV 中,但将第二列向上移动一个(JAVA)[关闭]
【发布时间】:2014-03-04 17:54:50
【问题描述】:

假设我的文件系统上已有一个 CSV 文件

0 red
1 orange
2 yellow
3 green
4 blue

我想将这些结果更新为第一列仍然存在,但第二列向上移动一个点,如下所示:

0 orange
1 yellow
2 green
3 blue
4 (some randomly generated color)

这可能与Java有关吗?我不想写入另一个文件..只需更新我正在读取的文件。任何帮助表示赞赏。谢谢。

编辑以显示当前输出

02         orange
03         yellow
04         green
05         blue
0 random

(注:0和random在同一列)

【问题讨论】:

  • 你尝试做什么?

标签: java csv


【解决方案1】:
Scanner scan = new Scanner(new File("csv.txt")); //or whatever the file name is
int[] numbers = new int[5];
String[] colors = new String[5];
int i = 0;
while (scan.hasNextLine()) {
    String line = scan.nextLine();
    Scanner s = new Scanner(line);
    if (s.hasNextInt()) {
        numbers[i] = s.nextInt();
        if (s.hasNext()) colors[i] = s.next();
    }
    s.close();
    i++;
}
scan.close();

PrintWriter output = new PrintWriter("csv.txt");
for (i = 0; i < numbers.length; i++) {
    output.print(numbers[i] + " ");
    if (i + 1 < numbers.length) output.println(colors[i + 1]);
    else output.println(/* random color */);
}
output.close();

【讨论】:

  • 它应该使用新代码。让我知道现在发生了什么。
  • 现在可以编译了,谢谢。这是我之前遇到的类似问题。它不是保留第一列而只更新第二列,而是完全删除第一行。此外,它在每个数字前附加一个零......第一次运行后,我得到的结果如下:02,橙色 03,黄色 04,绿色 05,蓝色 0 随机颜色,
  • 随机颜色进入最后一行的第一列。我无法访问特定单元格而不是整行
  • 我添加了更严格的扫描仪检查。对您的评论有几点意见:(1)文件被新文件覆盖,多次覆盖会扭曲结果。如果要保存覆盖,可以将 PrintWriter 设置为另一个文件名值。 (2) 将随机颜色的值放在最后一个println()的括号之间,这里是关于随机颜色的注释。
  • 我编辑了值 String line =scanner.nextLine();而不是 scan.nextLine(); (我猜这就是你的意思)。使用新代码,我在第一列中得到了 0 null。我会尝试你提到的关于保存覆盖的提示。
猜你喜欢
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 2020-10-04
  • 1970-01-01
  • 2015-04-06
相关资源
最近更新 更多