我正在为编程原理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!我愚蠢地把错误的文件路径。一切顺利,程序按预期运行。
答案 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);
}