(Java)为什么就算输入回车,while循环内还是会执行一次? 50

输入n个字符,while内执行n+1次。。。以下代码(有控制台交互)可直接运行:importjava.io.IOException;publicclassDemo2{pu... 输入n个字符,while内执行n+1次。。。
以下代码(有控制台交互)可直接运行:

import java.io.IOException;

public class Demo2 {

public static void main(String[] args) throws IOException{
int a = 0;
while ((a = System.in.read()) != '\n') {
System.out.println("hello");
}
}

}
展开
 我来答
澈丶233
2020-04-26 · TA获得超过169个赞
知道小有建树答主
回答量:446
采纳率:94%
帮助的人:105万
展开全部

楼上说的不对,字符'\n'根据ASCII码表可知相当于十进制数10:

回到你的代码,代码的意思是把输入值赋值给a,然后判断a与'\n'是否相等,如果不相等就输出hello。为了更好地看出程序的运行情况,我给你加了点“料”:

输入12,程序运行结果为:

好问题来了,为什么是这样的结果,记住,read方法返回的是当前字符的ASCII码,我敲的“12回车”,程序实际读入为“12\n”,查询ASCII码表:

因此“12\n”实际相当于输入了字符 49 50 10,System.in.read()在读取时是一个字符一个字符的读,读到'1'时,此时a=49,a!='\n',因此输出此时a为[49] hello;再读取下一个字符'2',此时a=50,a!='\n',因此输出此时a为[50] hello;在读取回车,此时a=10,a=='\n',所以跳出while循环,最终输出a为[10]。

可以看出,无论怎么进行输入,只要我们敲了回车,最终a 的值永远都将是\n,也就是10。


程序运行时直接敲回车的结果:

你题目中说的直接输入回车还是会执行一次我没看出来啊

匿名用户
2020-04-26
展开全部
  1. 你的a是int型,'\n'是字符型,类型不同怎么会相等呢?

  2. 字符串的比较用.equals()

希望能帮到你~

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式