这是我要读取的文件:
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”之后,我将如何具体阅读这些行?
答案 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)