如果用户只是按下回车而没有输入任何内容,我该怎么摆脱这个while循环。
map () {
//your existing code to extract field1 and field2
if (field1.equals("AA") || field2.equals("AA") {
return; // map stops here. you can also increment a counter to count how many such records exist in your dataset
}
// add the rest of your existing code here
context.write(...);
}
答案 0 :(得分:2)
你做不到。 scanf
是一个可怕的功能,应该避免(特别是,你不应该使用它来进行用户输入)。
让用户输入工作的最简单方法是确保所有输入都通过fgets
(读取整行)。然后,您可以分析该行,将其转换为数字(例如,使用strtol
,strtod
,sscanf
,...),或者随意执行任何操作。
以下是一个例子:
#include <stdio.h>
#include <string.h>
int main(void) {
while (1) {
char buf[200];
int integer;
printf("enter integer: ");
fflush(stdout);
if (!fgets(buf, sizeof buf, stdin)) {
/* input error or end of file reached */
break;
}
buf[strcspn(buf, "\n")] = '\0'; /* remove trailing newline, if any */
if (buf[0] == '\0') {
/* empty line */
break;
}
sscanf(buf, "%d", &integer);
}
return 0;
}
答案 1 :(得分:1)
根据我......
OTHERWISE将其转换为整数
int main()
{
while(1)
{
int integer;
char input[1024];
printf("enter integer:");
fgets (input, sizeof (input), stdin);
if (strcmp (input, "\n") == 0)
break;
integer = atoi(input);
}
return 0;
}
答案 2 :(得分:0)
有可能, 使用输入中不允许的内容初始化整数的值 例如,如果输入采用正整数,则使用-1
初始化整数int main()
{
while(1){
int integer=-1;
printf("enter integer:");
scanf("%d",&integer);
if(integer==-1)
break;
}
return 0;
}