前言:
闲来无事打开曾经用过的C编辑器准备写一个简单的计算器代码,在测试的时候发现当控制台连续接收输入、输出语句存在输入语句被跳过的现象,可能是太久没有使用C编写代码的缘故一时不知如何解决。
好在冲一会儿浪算是搞明白了,大概意思就是接收的数据被放在缓冲区中,当程序执行下一次的输入是 字符型 的时候,这时程序会优先取得缓冲区中的数据。
比如当用户输入int类型的数字后,为了让程序继续向下执行而敲的回车(“\n”)会被记录在缓冲区中。这样,如果继续执行字符输入会出现被跳过的现象。
代码示例:
// printf("请输入第一个数:");
// scanf("%d", &num1);
// printf("请输入运算符号:");
// scanf("%c", &op);
// printf("请输入第二个数:");
// scanf("%d", &num2);
printf("请输入第一个数:");
scanf("%d", &num1);
getchar(); // 清空缓冲区
printf("请输入运算符号:");
scanf("%c", &op);
printf("请输入第二个数:");
scanf("%d", &num2);
23-4-5记录一下Java中的此类问题:
Java中当输入是字符串时 next() 和 nextLine() 的区别
next只能识别一段完整的字符,遇到空格、回车结束。
nextLine会识别输入的全部内容,识别的同时遇到回车结束。
代码示例:
Scanner sc = new Scanner(System.in);
// System.out.println("next输入:");
// String s1 = sc.next();
// System.out.println("nextLine输入:");
// String s2 = sc.nextLine();
System.out.println("next输入:");
String s1 = sc.next();
System.out.println("nextLine输入:");
sc.nextLine();
String s2 = sc.nextLine();
👍👍👍