Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CSV中保留第一列,但将第二列上移一列(JAVA)_Java_Csv - Fatal编程技术网

在CSV中保留第一列,但将第二列上移一列(JAVA)

在CSV中保留第一列,但将第二列上移一列(JAVA),java,csv,Java,Csv,假设我的文件系统中已有一个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实现吗?我不想写入另一个文件。。只需更新我正在阅读的内容。感谢您的帮助。多谢各位 编辑以显示当前输出 (注意:0和random在同一列中)Scanner sc

假设我的文件系统中已有一个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实现吗?我不想写入另一个文件。。只需更新我正在阅读的内容。感谢您的帮助。多谢各位

编辑以显示当前输出

(注意:0和random在同一列中)

Scanner scan=new Scanner(新文件(“csv.txt”)//或者不管文件名是什么
int[]数字=新的int[5];
字符串[]颜色=新字符串[5];
int i=0;
while(scan.hasNextLine()){
String line=scan.nextLine();
扫描仪s=新扫描仪(行);
如果(s.hasNextInt()){
数字[i]=s.nextInt();
如果(s.hasNext())颜色[i]=s.next();
}
s、 close();
i++;
}
scan.close();
PrintWriter输出=新的PrintWriter(“csv.txt”);
对于(i=0;i
您试图做什么?应该使用新代码。让我知道现在发生了什么。它现在编译,谢谢。这是我以前遇到的类似问题。它不是保留第一列而只更新第二列,而是完全删除第一行。此外,它是在每个数字前附加一个零。。。第一次运行后,我得到的结果是:02、橙色03、黄色04、绿色05、蓝色0随机颜色,随机颜色将进入最后一行的第一列。我在访问特定单元格而不是整个行时遇到问题。我添加了更严格的扫描仪检查。对您的评论的几点评论:(1)文件被新文件覆盖,多次覆盖将扭曲结果。如果要保存覆盖,可以将PrintWriter设置为其他文件名值。(2) 将随机颜色的值放在最后一个println()中的括号之间,其中关于随机颜色的注释为。我编辑了值字符串line=scanner.nextLine();而是扫描.nextLine();(我猜这就是你的意思)。使用新代码,第一列的全部内容将得到0 null。我将尝试你提到的关于保存覆盖的技巧。
02         orange
03         yellow
04         green
05         blue
0 random
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();