打印Float值

时间:2015-12-09 10:12:36

标签: java

我已经从我本地系统中的文件中读取了一个内容。它是浮动类型。所以在打印输出时我无法获得小数点前的值。需要包含什么以便我得到一个确切的输出。

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

6 个答案:

答案 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