新手自学java遇到的小问题,求高手解答。

digest 2012-06-14 05:15:10
今天在阅读《Java核心技术》时实验书中的一个例子:
import java.util.*;


public class Sample
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);

System.out.println("What's your name?");
String name = in.nextLine();

System.out.println("How old are you?");
int age = in.nextInt();

System.out.println("Hi, " + name + "next year you will be" + (age + 1) );
}

}

这个例子我认为应该有2次输入,并且第一次应该是字符串类型,第二次应该是整形的。
之后应该会打印出所输入的数据。

但是结果是:

What is your name? a
How old are you? Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Sample.main(Sample.java:16)

我只输入了一个字符“a”之后回车,但是却没有给我第二次输入的机会,而且直接报错。
我百思不得其解,而且去网上也没寻找到答案,请高手指点。
...全文
503 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
路痴的旅行 2013-08-28
  • 打赏
  • 举报
回复
其他没有问题,就是输入中文时要特别注意输入的格式
路痴的旅行 2013-08-28
  • 打赏
  • 举报
回复
//如果是println,字符串为中文输入时要在输出的下一行点击再输入;如果是print,字符串为中文输入时不用换行但要在输出的末尾点击再输入。
acm365 2013-04-25
  • 打赏
  • 举报
回复
楼主代码没有问题,可以正确运行,请结贴
digest 2012-06-15
  • 打赏
  • 举报
回复
虽然这个问题最后解决的没啥技术含量,但是解决的过程中到学到了不少。
比如-encoding,-classpath什么的。感谢大家的捧场。
digest 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]
代码是绝对没有问题的,你看看再新建一个项目试试
[/Quote]

神了,我删掉旧工程重新建了一个同名工程,之后把原来的代码复制到新建的同名文件中。
接着直接运行就行了,竟然神奇的没出错误。

服了,看来是工程哪里设置的不太对。
DAO 2012-06-15
  • 打赏
  • 举报
回复
代码是绝对没有问题的,你看看再新建一个项目试试
digest 2012-06-15
  • 打赏
  • 举报
回复
好苦恼啊,我在cmd中运行的时候没有任何问题,
但是在eclipse中运行就会出错,看来是我eclipse设置的问题,我刚刚开始用这个软件,实在不太了解。
digest 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
int age = in.nextInt();
读的是Int类型的数字,不要写别的
[/Quote]

关于您说的输入错误问题:
我真的只在打印"what's your name "后输入过一个字符“a”然后直接回车,但接下来就报错了,错误在一楼已贴过一边,不再赘述。
digest 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
你自己检查你的输入情况。
控制台上打印出"what's your name ",本来要换行,不知道你的为什么没换行,下面的"how old are"也是同样的问题。至于出现异常,第二次输入的时候,本来要输入int类型的,你可能输入了String,所以就抛异常了啊!
[/Quote]

您说的2个关于换行的问题是我发帖时测试代码和测试结果脱节了:
第一个测试是两个都换行的情况,第二个测试是两个都不换行的情况,测试时输入完全一样,结果报错也都完全一样。

关于您说的输入错误问题:
我真的只在打印"what's your name "后输入过一个字符“a”然后直接回车,但接下来就报错了,错误在一楼已贴过一边,不再赘述。
梦在古稀 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 3 楼 的回复:
How old are you? Exception in thread "main" java.util.InputMismatchException
上面抛出的异常已经写清楚了,输入格式有误啊。


这段代码有2次输入,我的理解是第一次的输入应该是一个字符串,那么我输入的字符“a”就不会出现格式错误啊。
但是如果格式错误说的是第二次输入,可是我只按了1次回车……
[/Quote]

晕,我试过,按你的方式输入,没有任何问题。
digest 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
lz的代码是没有问题的,在cmd里面运行一下试试
[/Quote]

您的建议很好,我在cmd中实验结果:

没问题,但是在eclipse中就不能正常运行。⊙﹏⊙b汗
再不斩 2012-06-15
  • 打赏
  • 举报
回复
int age = in.nextInt();
读的是Int类型的数字,不要写别的
猴子滴救兵 2012-06-15
  • 打赏
  • 举报
回复
楼主的代码:
package hign;

import java.util.*;


public class Sample
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);

System.out.println("What's your name?");
String name = in.nextLine();

System.out.println("How old are you?");
int age = in.nextInt();

System.out.println("Hi, " + name + "next year you will be " + (age + 1) );
}

}
运行结果:
What's your name?
a
How old are you?
10
Hi, anext year you will be11

没问题啊
digest 2012-06-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
把这行代码String name = in.nextLine();改成String name=in.next();这样就好
[/Quote]

您的方法我这里实验的结果:

What's your name?
a
How old are you?
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Sample.main(Sample.java:16)

一样的会出错。费解中。
what123com 2012-06-14
  • 打赏
  • 举报
回复
你自己检查你的输入情况。
控制台上打印出"what's your name ",本来要换行,不知道你的为什么没换行,下面的"how old are"也是同样的问题。至于出现异常,第二次输入的时候,本来要输入int类型的,你可能输入了String,所以就抛异常了啊!
ylfndd 2012-06-14
  • 打赏
  • 举报
回复
lz的代码是没有问题的,在cmd里面运行一下试试
warmersen 2012-06-14
  • 打赏
  • 举报
回复
把这行代码String name = in.nextLine();改成String name=in.next();这样就好
digest 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
我试了下都没问题,
只是How old are you?下行输别的类型不输入数字才报上面的错,

坐等 顺便帮LZ 顶下
[/Quote]

难道是我的eclipse设置有问题?
同样的代码竟然测试出了不同的结果,我的操作只是输入字符“a”之后回车,就直接报错了。
digest 2012-06-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
How old are you? Exception in thread "main" java.util.InputMismatchException
上面抛出的异常已经写清楚了,输入格式有误啊。
[/Quote]

这段代码有2次输入,我的理解是第一次的输入应该是一个字符串,那么我输入的字符“a”就不会出现格式错误啊。
但是如果格式错误说的是第二次输入,可是我只按了1次回车,也就是说还没有第二次输入,怎么会报错呢?
少年太天真 2012-06-14
  • 打赏
  • 举报
回复
我试了下都没问题,
只是How old are you?下行输别的类型不输入数字才报上面的错,

坐等 顺便帮LZ 顶下
加载更多回复(2)

58,453

社区成员

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

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