一个在线的网页编程题:
从控制台读取 2 个文件名。
第一个文件包含实数(小数),由空格分隔。例如,3.1415。
将数字四舍五入到整数并将其写入第二个文件,由空格分隔这些数字。
关闭流。
四舍五入工作原理举例如下:
3.49 => 3
3.50 => 4
3.51 => 4
-3.49 => -3
-3.50 => -3
-3.51 => -4
要求:
程序应两次从控制台读取文件名。
为第一个文件创建输入流。为第二个文件创建输出流。
从第一个文件读取数字,四舍五入,然后将其写入第二个文件,这些数字由空格分隔。
必须按任务中的指示执行四舍五入。
必须关闭文件流。
/*
数字四舍五入
*/
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Solution {
public static void main(String[] args)throws Exception {
Scanner sc = new Scanner(System.in);
String name1 = sc.nextLine();
String name2 = sc.nextLine();
FileInputStream file = new FileInputStream(name1);
FileOutputStream file2 = new FileOutputStream(name2);
while(file.available() > 0){
double d = file.read();
file2.write((int) Math.round(d));
}
file.close();
file2.close();
}
}
我的程序如上,但没办法达到:
从第一个文件读取数字,四舍五入,然后将其写入第二个文件,这些数字由空格分隔。
必须按任务中的指示执行四舍五入。
有人又没帮我看看要咋改正。
可以用 readLine().split(' ') 读取到 String[]
再遍历
file.read()读取的是字节,对字节进行操作没法达到你的要求
用reader和writer读取整行字符串进行操作
reader读取
再用wirter以字符串的形式写入
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
/*
public class Test11 {
public static void main(String[] args) throws Exception {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
String name1 = sc.nextLine();
String name2 = sc.nextLine();
FileReader fr = new FileReader(name1);
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(new FileWriter(name2));
String value = null;
while ((value = br.readLine()) != null) {
String vs[] = value.split(" ");
for (String v : vs) {
bw.write(String.valueOf(Math.round(Double.valueOf(v))) + " ");
}
}
br.close();
bw.close();
}
}