如何使用Buffered Reader使用Java读取文件中的整数?

时间:2019-02-26 05:26:23

标签: java opengl lwjgl

这是我要读取的文件:

P 1.0 0.0 0.0
80 10
80 30
230 37
280 30
280 10
T
t 100 -75
r 30 0 0
s 0.5 1.5 0 0

这里是我的部分代码:

File file = new File("coordinatess.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String st;
glPushMatrix();
while ((st = br.readLine()) != null){
                        String str[] = st.split(" ");
                        if(str[0].equalsIgnoreCase("P")){
                            glColor3f(Float.parseFloat(str[1]), Float.parseFloat(str[2]), Float.parseFloat(str[3]));

                        }
                        else if(str[0].equalsIgnoreCase("T")){
                            br.readLine();
                        }
                        else if(str[0].equalsIgnoreCase("r")){
                            glRotatef(Float.parseFloat(str[1]), Float.parseFloat(str[2]), Float.parseFloat(str[3]), 0);
                        }
                        else if(str[0].equalsIgnoreCase("s")){
                            glScalef(Float.parseFloat(str[1]), Float.parseFloat(str[2]), Float.parseFloat(str[3]));
                        }
                        else if(str[0].equalsIgnoreCase("t")){
                            glTranslatef(Float.parseFloat(str[1]), Float.parseFloat(str[2]), 0);
                        }

                    }

我在读没有字母的行时有点麻烦。它只是整数。在“ P”之后,我将如何具体阅读这些行?

2 个答案:

答案 0 :(得分:0)

使用嵌套级别解析具有异常处理的值Integer.parseInt(value)

String str = "T 10 5.7";
String[] strings = str.split(" ");
for (String string : strings) {
    try {
        System.out.println(Integer.parseInt(string));
    } catch (Exception e) {
        try {
            System.out.println(Float.parseFloat(string));
        } catch (Exception e2) {
            System.out.println(string);
        }
    }
}

答案 1 :(得分:0)

尝试Santaji的方法,在try-catch块中包括finally以及try-catch块之外。您的最终try-catch块应如下所示。任何输入流都必须关闭。

String str = "T 10 5.7";
        String[] strings = str.split(" ");
        for (String string : strings) {
            try {
                System.out.println(Integer.parseInt(string));
            } catch (Exception e) {
                try {
                    System.out.println(Float.parseFloat(string));
                } catch (Exception e2) {
                    System.out.println(string);
                }
            } finally {
                  try {
                    if (file !=null) {
                          file.close();
                 }
            }
           }
        }

但是,要将整数转换为字符串,您可以使用其他方式,例如:
String.valueOf(number)(首选)

Integer.toString(number)