我已经从我本地系统中的文件中读取了一个内容。它是浮动类型。所以在打印输出时我无法获得小数点前的值。需要包含什么以便我得到一个确切的输出。
我希望输出像1.68765但是我得到了.68765 此外,我需要附加另一个文件的输出。
文件的内容将是这样的,但中间没有双行空格。彼此相邻,但在下一行中
1
.
6
8
7
6
5
这是我的代码
package testing;
import java.io.*;
class read {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("D:/Movies/test.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
line = br.readLine();
System.out.println(line);
}
} finally {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:3)
如您所见,您正在使用以下内容跳过第一行。在打印一行之前,您正在读取两行,因此跳过第一行。
String line = br.readLine();
while (line != null) {
line = br.readLine();
System.out.println(line);
}
StringBuilder sb = new StringBuilder();
String line;
while ((line=br.readLine()) != null) {
sb.append(line);
}
float myFloat = Float.valueOf(sb.toString());
在循环测试中直接从文件中分配行的值。这样可以避免头痛,更直观。
既然你已有StringBuilder
个对象,我建议你追加所有行,然后将其值转换为float
。
答案 1 :(得分:0)
String line = br.readLine();
已阅读第一行,请使用
String line = "";
答案 2 :(得分:0)
我建议使用scanner类来读取你的输入,使用nextFloat类来获取下一个浮点数 -
Scanner scanner = new Scanner(new File("D:/Movies/test.txt"));
while(scanner.hasNextFloat()) {
System.out.println(scanner.nextFloat());
}
答案 3 :(得分:0)
基本上你正在跳过@ yassin-hajaj提到的第一行,你可以通过两种方式解决这个问题:
在JDK8中,它看起来像这样:
Stream<String> lines = Files.lines(Paths.get("D:/Movies/test.txt"));
String valueAsString = lines.collect(Collectors.joining()); // join all characters into a string
Float value = Float.valueOf(valueAsString);// parse it to a float
System.out.printf("%.10f", value); // will print vlaue with 10 digits after comma
或者你可以通过(JDK7 +)来实现:
StringBuilder sb = new StringBuilder();
try ( BufferedReader br = new BufferedReader(new FileReader("D:/Movies/test.txt"))){ // this will close are streams after exiting this block
String line;
while ((line = br.readLine())!=null) { // read line and assign to line variable
System.out.println(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
答案 4 :(得分:0)
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("F:/test.txt"));
try {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} finally {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
答案 5 :(得分:0)
您还可以将readLine()
方法置于while
条件下。
此外,float
可能无法按预期方式打印,即显示的位数会减少。
public class Reader {
public static void main(String[] args) throws IOException, NumberFormatException {
BufferedReader br = new BufferedReader(new FileReader("D:/test.txt"));
String line = null;
while ((line = br.readLine()) != null)
System.out.println(Double.parseDouble(line));
br.close();
}
}
示例输出:
1.68765
54.4668489
672.9821368