如何从键盘输入一个正整数n(如果输入数据不符合要求,提醒用户重新输入,直到满足要求为止,求解1-n之间所有奇数的和。请使用循环语句实现?

如何从键盘输入一个正整数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,也就死循环了

img

帮你改了一下,参考如下:

    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);
    }

img


如有帮助,欢迎采纳哈!

在这里插入图片描述

本人的开源项目,欢迎star支持下!!!