从文件导入整数,将它们相乘,然后导出到新文件

时间:2015-11-29 00:28:24

标签: java java.util.scanner java-io printwriter

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

作业说明:

  

编写程序以创建新文件(例如名为scaled.txt)(如果该文件不存在)(如果文件存在,则终止程序而不执行任何操作。)。将现有文件中的所有数字乘以整数(例如original.txt)乘以10,并将所有新数字保存在新文件中(例如scaled.txt)。

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

26
12
4
89
54
65
12
65
74
3

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

260
120
40
890
540
650
120
650
740
30

这是我到目前为止所写的:

        //Bronson Lane 11/28/15
        //This program reads a file, multiplies the data in the file by           10, then exports that new data
        //to a new file
        package hw12;
        import java.io.File;
        import java.io.PrintWriter;
        import java.util.Scanner;
        public class HW12Part2 {
           public static void main(String[] args) throws Exception{
              File file1 = new   File("/Users/bronsonlane/Documents/workspace/hw12/original.rtf");
              if (!file1.exists()) {
                 System.out.println("File does not exist");
                 System.exit(0);
              }
              int newNum = 0;
              Scanner input = new Scanner(file1);
              while (input.hasNextInt()) {
                 int num = input.nextInt();
                 newNum = num * 10;
              }

              PrintWriter output;
              File file2 = new File("/Users/bronsonlane/Documents/workspace/hw12/scaled.rtf");
              if (file2.exists()) {
                 System.exit(0);
              }
              output = new PrintWriter(file2);
              while (input.hasNextInt()) {
                    int num = input.nextInt();
                    newNum = num * 10;
                    output.println(newNum);
              }
              output.close();
        }
    }

我现在的问题是控制台正在输出:

  

文件不存在

无论文件在哪里。

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

我知道我缺少一些完成该计划的关键要素,但我无法弄明白。

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

3 个答案:

答案 0 :(得分:1)

您已在while块中声明了newNum,即您将int newNum...放入while块的大括号内。这意味着变量仅在该块中具有意义。在该块之外声明变量,因此它具有整个方法的范围,类似于int newNum = 0;,然后在while块中使用它(没有int),然后它将在以后可用。

我注意到,在查看它时,您对新文件只有一个写入语句。也许你刚刚做到这一点并且尚未写出来......

答案 1 :(得分:1)

您可以在阅读时打开文件,在读取文件行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();
    }

答案 2 :(得分:1)

对您的答案进行以下更改

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);
            }