如何解决Java中的NumberFormatException? import java.util.*; 导入java.lang.*; 导入java.io.*; 班长{ 公共静态void main(字符串[]args)引发IOException{ 试一试{ BufferedReader红色=新的BufferedReader(新的InputStreamReader(System.in)); 字符串s=red.readLine(); int t=0; int l=0; int c=0; t=Integer.valueOf(red.readLine()); for(int i=0;i
我想你想要这个:如何解决Java中的NumberFormatException? import java.util.*; 导入java.lang.*; 导入java.io.*; 班长{ 公共静态void main(字符串[]args)引发IOException{ 试一试{ BufferedReader红色=新的BufferedReader(新的InputStreamReader(System.in)); 字符串s=red.readLine(); int t=0; int l=0; int c=0; t=Integer.valueOf(red.readLine()); for(int i=0;i,java,numberformatexception,Java,Numberformatexception,我想你想要这个: 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));
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);
}
}
}
如果当前输入行为“3 1”
,则将分配l
和c
1
请注意,尽管此代码可能有效,但它很脆弱;您可能希望添加代码以防止坏数据。您可以在输入行上使用类似String.split的函数,根据分隔符(此处为空格)进行剪切: 另一个有用的方法是String.trim()从字符串的开头和结尾删除Black字符
String line = red.readLine();
String[] items = line.split("\\s");
另一点是,您只能围绕Integer.parseInt()调用编写try/catch块,而不是围绕整个循环:
这样,您将根据出错行发生错误,而不会停止整个进程。但这是关于您的错误处理:如果输入仅包含一个“坏字符”(即:“a”),您是要停止出错的整个进程,还是只记录一条消息并继续。作为旁白,
Integer.valueOf(String)
返回一个新的整数
。您想使用Integer.parseInt(String)
。我们需要查看您正在读取的文件。问题是文件中3和1之间的空格。另外,这发生在哪一行?因为这将帮助您知道文件中哪一行有空格。定义“resolve”。如果您读取的行不是有效整数(并且31
不是有效整数),您希望发生什么?给定的输入是l和c,由空格分隔。我认为由于这个空格,无法将l和c的读数作为整数。
String line = red.readLine();
String[] items = line.split("\\s");
String line = " test ";
line = line.trim(); // "test"