Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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
Java 从文件中导入整数,将其相乘,然后导出到新文件_Java_Java.util.scanner_Java Io_Printwriter - Fatal编程技术网

Java 从文件中导入整数,将其相乘,然后导出到新文件

Java 从文件中导入整数,将其相乘,然后导出到新文件,java,java.util.scanner,java-io,printwriter,Java,Java.util.scanner,Java Io,Printwriter,我正在为《编程原理1》做一个家庭作业,我正在努力想办法解决这个问题 转让声明如下: 如果不存在新文件(如scaled.txt),则编写一个程序来创建新文件(如果该文件存在,则在不执行任何操作的情况下终止程序)。将现有文件中的所有数字与整数(如original.txt)相乘10,并将所有新数字保存在新文件中(如scaled.txt) 例如,如果现有文件(original.txt)为: 然后,新文件(scaled.txt)应为: 260 120 40 890 540 650 120 650 740

我正在为《编程原理1》做一个家庭作业,我正在努力想办法解决这个问题

转让声明如下:

如果不存在新文件(如scaled.txt),则编写一个程序来创建新文件(如果该文件存在,则在不执行任何操作的情况下终止程序)。将现有文件中的所有数字与整数(如original.txt)相乘10,并将所有新数字保存在新文件中(如scaled.txt)

例如,如果现有文件(original.txt)为:

然后,新文件(scaled.txt)应为:

260
120
40
890
540
650
120
650
740
30
这是我到目前为止写的:

//布朗森巷11/28/15
//该程序读取一个文件,将文件中的数据乘以10,然后导出新数据
//添加到新文件
包装hw12;
导入java.io.File;
导入java.io.PrintWriter;
导入java.util.Scanner;
公共类HW12第2部分{
公共静态void main(字符串[]args)引发异常{
File file1=新文件(“/Users/bronsonlane/Documents/workspace/hw12/original.rtf”);
如果(!file1.exists()){
System.out.println(“文件不存在”);
系统出口(0);
}
int newNum=0;
扫描仪输入=新扫描仪(文件1);
while(input.hasNextInt()){
int num=input.nextInt();
newNum=num*10;
}
打印机输出;
File file2=新文件(“/Users/bronsonlane/Documents/workspace/hw12/scaled.rtf”);
if(file2.exists()){
系统出口(0);
}
输出=新的PrintWriter(文件2);
while(input.hasNextInt()){
int num=input.nextInt();
newNum=num*10;
output.println(newNum);
}
output.close();
}
}
我现在的问题是控制台正在输出:

文件不存在

不管文件在那里

我认为这是将其打印到新文件的最佳方式,但显然不是,因为它根本不起作用

我知道我缺少了一些完成这个项目的关键要素,但我就是想不出来

*编辑1:更新代码和新问题
*编辑2:Doh!我愚蠢地把文件路径放错了。一切正常,程序按预期运行。

您已经在while块中声明了newNum,即,您将
int newNum…
放在while块的大括号中。这意味着变量仅在该块中有意义。在该块之外声明变量,使其具有整个方法的作用域,类似于
intnewnum=0
然后在while块中使用它(不带int),之后它将可用


我注意到,在查看时,新文件中也只有一条write语句。也许你刚刚完成了这一步,还没有写出来…

你可以在读取中打开一个文件,在读取文件的y行时,你可以直接将更新的行输出到新文件中。请参见下面的代码示例,该示例使用整数打开文件并更新整数,然后将其添加到另一个文件:

public static void main(String[] args) throws FileNotFoundException {
        //open file containing integers
        File file = new File("C:\\test_java\\readnumbers.txt"); 

        //instruct Scanner to read from file source
        Scanner scanner = new Scanner(file); 

        //create file object for output
        File outFile = new File("C:\\test_java\\incremented_numbers.txt");

        //print writer with source as file 
        PrintWriter writer = new PrintWriter(outFile); 

        //for each line in input file 
        while(scanner.hasNext()) {
            //get the integer in the line 
            int number = scanner.nextInt(); 
            number *= 10; 

            //write the updated integer in the output file
            writer.println(number);
        }

        //close both streams
        scanner.close();
        writer.close();
    }

对你的答案做以下修改:

PrintWriter output;
File file2 = new File("scores.txt");
if (file2.exists()) {
                System.exit(0);
}
output = new PrintWriter(file2);
 while (input.hasNextLine()) {
                int num = input.nextInt();
                int newNum = num * 10;
               output.print(newNum);
            }

你应该具体说明你遇到的问题。它在输出什么吗?输出有问题吗?等等@Pushkin啊,是的。非常感谢。我现在就编辑这篇文章。当调用
nextInt()
时,应该使用
hasNextInt()
,而不是
hasNextLine()
应该输出。println();或者在一行中一个接一个地添加所有整数。逐个读取所有整数并将其添加到文件2,因此在while循环结束时,文件2将准备就绪且方便。请注意,您希望如何将数据放入文件2中,它就在您的手中,我刚刚给了您一些提示。也就是说,在需要逗号或空格的地方,可以在output.print(…)中执行。我只是对此进行了评论,因为有问题的是,请求的输出每行显示一个数字。
PrintWriter output;
File file2 = new File("scores.txt");
if (file2.exists()) {
                System.exit(0);
}
output = new PrintWriter(file2);
 while (input.hasNextLine()) {
                int num = input.nextInt();
                int newNum = num * 10;
               output.print(newNum);
            }