Java 按原样打印浮点值

Java 按原样打印浮点值,java,Java,我从本地系统中的文件中读取了一个内容。它是浮点型的。因此,在打印输出时,我无法获得小数点之前的值。需要包括哪些内容,以便获得准确的输出 我希望输出像1.68765,但我得到的是.68765 此外,我还需要附加来自另一个文件的输出,并将其删除 文件内容如下,但中间没有双线空格。相邻但在下一行 1 . 6 8 7 6 5 这是我的密码 package testing; import java.io.*; class read { public static void main(S

我从本地系统中的文件中读取了一个内容。它是浮点型的。因此,在打印输出时,我无法获得小数点之前的值。需要包括哪些内容,以便获得准确的输出

我希望输出像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();
        }
    }
}

stringline=br.readLine()已阅读第一行,请使用

 String line = "";

我建议使用scanner类读取输入,使用nextFloat类获取下一个浮点数-

Scanner scanner = new Scanner(new File("D:/Movies/test.txt"));
while(scanner.hasNextFloat()) {
 System.out.println(scanner.nextFloat());
}

正如您可能看到的,您使用以下命令跳过了第一行。您在打印一行之前阅读了两行,因此跳过了第一行

String line = br.readLine();
while (line != null) {
    line = br.readLine();
    System.out.println(line);
}

解决方案 直接在循环测试中指定文件中的行的值。这将使你免于头痛,而且更加直观


既然您已经有了一个
StringBuilder
对象,我建议您附加所有行,然后将其值转换为
float

基本值。如果您跳过了@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

您还可以将
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


请您也提供文件好吗?另外,您正在跳过文件的第一行
line=br.readLine()
循环中的内容应该在
sysout
之后,只要将所有内容作为字符串读入,然后将其解析为double/float即可。谢谢,编辑此消息后我出现了一个错误:)此修复之后,它就可以正常工作了。
   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();
        }
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();

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