Как читать целые числа в файле с Java с помощью Buffered Reader? - PullRequest
0 голосов
/ 26 февраля 2019

Вот файл, который я пытаюсь прочитать:

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 голосов
/ 26 февраля 2019

Попробуйте путь Сантаджи, и в блок 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)

0 голосов
/ 26 февраля 2019

использовать вложенный уровень для анализа значений 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);
        }
    }
}
...