如何从键盘输入一个正整数n(如果输入数据不符合要求,提醒用户重新输入,直到满足要求为止,求解1-n之间所有奇数的和。请使用循环语句实现?
这个是哪里的问题? 输入double类型,进入一个死循环?
System.out.println("请输入正整数:");
int sum=0;
int flag=1;
do{
if(scanner.hasNextInt()){
int a=scanner.nextInt();
if(a>0){
for(int i=1;i<=a;i+=2){
sum+=i;
}
}else {
flag=0;
System.out.println("请重新输入");
}
}else {
flag=0;
System.out.println("请重新输入:");
}
}while (flag==0);
scanner.close();
System.out.println(sum);
1.
输入 小数,scanner.hasNextInt() 那里 永远不成立,所以 一直是flag = 0,也就死循环了
帮你改了一下,参考如下:
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入正整数:");
int sum=0;
int flag;
do{
String str = scanner.next();
try {
int a = Integer.parseInt(str);
if(a>0){
for(int i=1;i<=a;i+=2){
sum+=i;
}
flag=1;
}else {
flag=0;
System.out.println("请重新输入");
}
}catch (Exception e) {
flag=0;
System.out.println("请重新输入:");
}
}while (flag==0);
scanner.close();
System.out.println(sum);
}
如有帮助,欢迎采纳哈!