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