new Scanner(Systemin)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束,把所输入的内容传给Scanner,作为扫描对象。如果要获取输入的内容,则只需要调用Scanner的nextLine()方法。
举例:
Scanner sc= new Scanner(Systemin)String st = scnextLine();//获取输入信息
该函数的功能是 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。它是非阻塞函数,即执行该函数后程序不会停下,而是进行执行。
其用法,一般是先用该函数判断是否有键盘输入,如果有则用getch等读键盘函数来读取该输入,如果没有键盘输入就继续执行程序。例如:
while(1){
//
if(_kbhit())
{
ch=getch();
if(ch==27) break; //如果按了ESC键则跳出循环
}
}
你好
getchar是只能输入一个字符
putchar只能输出一个字符
两者互相搭配
如
ch1 = getchar();//得到一个字符
putchar(ch1);//输出一个字符也可以是putchar(getchar())这种格式。
当然你也可以用printf("%c",ch1)输出,和putchar效果一样的只是这个函数也可以多个字符输入。
楼主要注意用这两个函数有个陷阱,我也是刚研究出来的,所以来看看知友是否有类似的疑惑
以便挣点分数,同时分享我的成果。
很久就对getchar()吃回车很疑惑,今天花了将近两个小时总于弄懂了。
ch1 = getchar();
我输入c而实际存放到终端缓存里是c和一个回车。
如果我在写
ch2 = getchar()那么这个getchar会先看一下缓存里有没有字符,没有才可以等待用户输入。
而上面缓存里还有一个回车,所以不会等待用户的输入而直接从缓存里获取,在dos中不会显示光标等用户输入,所以如果进行如下 *** 作
putchar(ch1);//输出字符c
putchar(ch2); //在dos中会发现出现空行,这是因为ch2得到了缓存中的回车了
当然scanf也有这么一个弊端。我进行以下 *** 作:
scanf("%s",str1)//str1是字符数组名;
ch2 =getchar()//同样这里会得到一个上面留在缓存里的回车了;
但是如果
putchar();
scanf("%c",&ch);//这里一个字符会得到回车,而
如果是 scanf("%s",str1) //则不会得到回车了,会在dos出现光标,等待用户输入。
以下是网友解释:
getchar()有一个让人很头疼的特点,这也导致了很多人不喜欢用它……
它会向终端缓存要求一个字符,如果缓存里没有这个字符它就会等待用户输入,于是在用户没有任何多余的输入的情况下,每一次调用它都会等待用户输入一个字符,但是并不是用户输入一个字符它就停止等待了,它的等待是以回车确认作为等待的终止条件的,也就是说,用户可以在回车之前输入n个字符,但是它只会返回第一个字符,其它的所有字符都会保留在终端缓存中,当下一次再执行getchar()的时候,才会从终端缓存中取出并返回这个字符……
由于每一次输入一个字符的时候都要按回车确认以终止等待,所以在缓存中将会存留一个回车,如果不再执行一次取出这个回车,它可能会影响到下一次的输入……
但是往往这不是处理事情的最好方式,因为,用户可能并不是输入一个字符加一个回车,用户可能会输入更多字符和一个回车,这时,这种处理方式反而会得到一种反效果,因为用户可能希望将所有的字符放在一起输入,这时,下一次getchar将是第一次输入中的下一个字符而不再产生等待,而这种处理方式不仅不会去除掉最后的回车(因为此时的回车不再是下一个字符了,而是在整个字符串的最后),反而会使得字符串中下一个字符的输入丢失……
所以getchar的这个特点使得它在实际应用中大受限制,仅仅会在编程学习中发挥一定的作用……同时scanf也有类似的弊病,比如说在请求数字的时候输入字符串之后程序所有的请求数字的scanf将会得到一连串奇怪的返回值……
等等这些在处理复杂的输入时将会使人很头疼……
常用的办法是使用conioh中的getch()编写自己想要的输入,这个函数只会等待一个字符,而不会等待回车……
下面是使用技巧:
可以用上面地方法用循环连环输入,如下:ch = getchar()//在dos中输入一串字符;for(ch!='#') {putchar(ch);ch=getchar();//会将上面的留在缓存中的字符一个个输出来,原因上面讲了,这个getchar会先在缓存中查看有没有留在缓存中的字符,有就直接接收了,没有才会等待用户的输入。网友的解释已经很清楚了,我也是从上面领悟的,差不多也应该是这样了。其实也没必要深究,了解即可。
希望能帮到你。
以上就是关于如何从java控制台获得用户输入全部的内容,包括:如何从java控制台获得用户输入、C语言 大神指导! _kbhit函数应该怎么用或者有更好的方法读取键盘输入方法!!、putchar和getchar的联系关键在于两者的配合使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)