import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
try {
BufferedReader red = new BufferedReader(new InputStreamReader(System.in));
String s = red.readLine();
int t = 0;
int l = 0;
int c = 0;
t = Integer.valueOf(red.readLine());
for (int i = 0; i < t; i++) {
l = Integer.valueOf(red.readLine());
c = Integer.valueOf(red.readLine());
for (int j = 1; j <= l; j++) {
for (int k = 1; k <= c; k++) {
if (j == 1 || j == l || k == 1 || k == c) {
System.out.print("*");
} else {
System.out.print(".");
}
}
System.out.println();
}
}
l = 0;
c = 0;
t = 0;
red.close();
} catch (NumberFormatException e) {
System.out.println(e);
}
}
}
这是错误:
java.lang.NumberFormatException:对于输入字符串:“3 1”
我认为输入不正确,因此无法转换为int
,但我无法解决此问题。很多时候,如果我不使用try-catch
块,我会收到错误。
答案 0 :(得分:0)
我想你想要这个:
l = red.nextInt(); // straight to int
c = red.nextInt(); // ditto
red.nextLine(); // to clear the newline from the buffer
如果当前输入行为"3 1"
,则l
将分配3
和c
1
。
请注意,尽管此代码可能有用,但它很脆弱;您可能希望添加代码以防止错误数据。
答案 1 :(得分:0)
您可以在输入行上使用String.split等函数根据分隔符(此处为空格)剪切它:
String line = " test ";
line = line.trim(); // "test"
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
另一个有用的方法是String.trim()从String的开头和结尾删除blanck caracters。
typedef void (^PDFCMapParserHandler)(NSArray *lines);
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()
另一点是你可以只在Integer.parseInt()调用周围编写try / catch块,而不是完整的循环: 这样您就会出现基于错误行的错误而不会停止整个过程。但这是关于你的错误处理:如果输入只包含一个&#34;坏的特征&#34; (即:&#39; a&#39;),您是要错误地停止整个过程,还是只记录一条消息并继续。