(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");
}
}
} 展开
以下代码(有控制台交互)可直接运行:
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");
}
}
} 展开
2个回答
展开全部
楼上说的不对,字符'\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。
程序运行时直接敲回车的结果:
你题目中说的直接输入回车还是会执行一次我没看出来啊
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询