求助,诡异的简单输入异常java.lang.NumberFormatException: For input

tomato91 2011-05-15 01:08:30
代码片断如下: 一输入完a 按回车 就弹出异常
Exception in thread "main" java.lang.NumberFormatException: For input string: ""

char flag = (char)System.in.read();
//System.in.read();
String str;
if(flag=='a')
{
System.out.println("请输入要产生的迷宫的大小 size=");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
size = Integer.parseInt(str); //!!!这行出错 inputMaze(size);
}
...全文
321 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomato91 2011-05-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangjie1989091 的回复:]
引用 6 楼 tomato91 的回复:

Java code

char flag = (char)System.in.read();
System.in.read();
System.in.read();
String str;


自己解决了,这样就行了
晕倒,可是还是不懂啊
为什么要两个System.in.read();
本来我一直只加了一句System.i……
……
[/Quote]
啊哦 那第一个System.in.read();呢 哎呀 先顶上 明儿有空再看~
darkor 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tomato91 的回复:]

Java code

char flag = (char)System.in.read();
System.in.read();
System.in.read();
String str;


自己解决了,这样就行了
晕倒,可是还是不懂啊
为什么要两个System.in.read();
本来我一直只加了一句System.i……
[/Quote]
第二个System.in.read();改为int c=System.in.read();然后打印出c,其值为10,说明读入了‘/n’字符,也就是回车键代表的字符
fengyun55 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tomato91 的回复:]
Java code

char flag = (char)System.in.read();
System.in.read();
System.in.read();
String str;


自己解决了,这样就行了
晕倒,可是还是不懂啊
为什么要两个System.in.read();
本来我一直只加了一句Sys……
[/Quote]
回车是两个字符吧
fengyun817 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tomato91 的回复:]

Java code

char flag = (char)System.in.read();
System.in.read();
System.in.read();
String str;


自己解决了,这样就行了
晕倒,可是还是不懂啊
为什么要两个System.in.read();
本来我一直只加了一句System.i……
[/Quote]

楼主试试输入abc回车,看看。
tomato91 2011-05-15
  • 打赏
  • 举报
回复

char flag = (char)System.in.read();
System.in.read();
System.in.read();
String str;

自己解决了,这样就行了
晕倒,可是还是不懂啊
为什么要两个System.in.read();
本来我一直只加了一句System.in.read();用来把回车读掉的。。。
啊 看不懂了,求大侠们解释啊~~~
tomato91 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fengyun817 的回复:]
Java code


iwhile (true) {
System.out.println("请输入a继续,q退出!");
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
……
[/Quote]
>_<
这位大侠,你说了这么多,感觉不是很懂呐
我只输入了一个a啊,没有多余的输入了,
a之后的回车应该不会被读入的吧,呃 不清楚- -||
a的输入没问题的呐,因为能够正确进入我的if语句
关键下面那个咋就空字符串了呢,它咋根本没等我输入呢...
呃,感觉就是这个问题了,readLine难道不是应该是要等着用户输入一个字符串的么??
fengyun817 2011-05-15
  • 打赏
  • 举报
回复


iwhile (true) {
System.out.println("请输入a继续,q退出!");
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String flag = br.readLine();
String str;
if ("a".equals(flag)) {
do {
System.out.println("请输入要产生的迷宫的大小 size=");
br = new BufferedReader(
new InputStreamReader(System.in));
str = br.readLine();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(str);
if (m.matches()) {
int size = Integer.parseInt(str);
System.out.println(size);
break;
} else {
System.out.println("请输入数字.");
}
} while (true);
break;
}else if("q".equals(flag))
{
break;
}
}
fengyun817 2011-05-15
  • 打赏
  • 举报
回复
说错了,是报java.lang.NumberFormatException: For input string: "" 异常,对空字符做数字类型转换.
fengyun817 2011-05-15
  • 打赏
  • 举报
回复
read() 是读入下一个字节数据(只读一个,也就是输入ab它只读到a).
输入带a的字符,是肯定会进入if的,而进入后 new BufferedReader(new InputStreamReader(System.in))又读不到内容,所以就报空指针了.


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
try {
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String flag = br.readLine();
String str;
if ("a".equals(flag)) {
do {
System.out.println("请输入要产生的迷宫的大小 size=");
br = new BufferedReader(
new InputStreamReader(System.in));
str = br.readLine();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(str);
if (m.matches()) {
int size = Integer.parseInt(str);
System.out.println(size);
break;
} else {
System.out.println("请输入数字.");
}
} while (true);
break;
}
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

}


tomato91 2011-05-15
  • 打赏
  • 举报
回复
想不通啊 我都还没输入呢 怎么就出错了!
那个a的输入应该是没问题的。
一进入if语句就异常了。。。
代码到底哪里有问题啊 求各位大侠帮忙看看啊...

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧