报错error: incompatible types: boolean cannot be converted to int

import java.util.Scanner;
class Circle{
    private int radius;
    //为radius添加set方法,接收用户输入的半径,如果用户输入半径为<=0,则让半径的值为2
    public void setter(int radius){
        if(radius<=0){
            radius=2;
        }
        else
            this.radius=radius;
    }
    //无参构造方法 ,给radius赋值为2,并输出信息:"This is a constructor with no para."
    public Circle(){
        radius=2;
        System.out.println("This is a constructor with no para.");
    }
        //有参构造方法 ,接收用户给的radius赋值,并输出"This is a constructor with para."(如果给的半径小于等于0,则赋默认值为2)
        public Circle(int radius){
            if(radius<=0){
                radius=2;
            }
            else
                this.radius=radius;
            System.out.println("This is a constructor with para.");
        }
    //为radius半径添加get方法,返回用户输入的半径
    public int getter(){
        return radius;
    }
    //求圆面积方法getArea(), π使用Math.PI代替
    public float getArea(){
        double area;
        area=Math.PI*radius*radius;
        return (float)area;
    }
    //定义toString方法
    public String toString(){
        return "Circle [radius=" + radius + "]";
    }
}
public class Main{
    public static void main(String[] args){
        int radius;
        Circle c1,c2,c3;
        Scanner sc=new Scanner(System.in);
        //定义并创建Circle类对象c1,输出c1对象,求c1的面积并输出
        c1=new Circle();
        System.out.println(c1.toString());
        System.out.println(c1.getArea());
        //定义并创建Circle类对象c2,输出c2对象,求c2的面积并输出;
        c2=new Circle();
        System.out.println(c2.toString());
        System.out.println(c2.getArea());
        //从键盘接收整数半径,赋值给c2的半径,输出c2对象,求c2的面积并输出
        c2=new Circle(sc.hasNextInt());
        System.out.println(c2.toString());
        System.out.println(c2.getArea());
        //从键盘接收整数半径,用有参构造方法创建Circle类对象c3,输出c3对象,求c3的面积后输出
        c3=new Circle(sc.hasNextInt());
        System.out.println(c3.toString());
        System.out.println(c3.getArea());
    }
}
//Main.java:55: error: incompatible types: boolean cannot be converted to int
//        c2=new Circle(sc.hasNextInt());
//                                   ^
//Main.java:59: error: incompatible types: boolean cannot be converted to int
//        c3=new Circle(sc.hasNextInt());
//                                   ^
//Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
//2 errors

c2=new Circle(sc.hasNextInt());
->
c2=new Circle(sc.nextInt());

hasNextInt()方法是判断控制台接收是否为整型数字,而不是接收数据,还需要有变量接收数据。hasNextInt返回值为 boolean类型,而构造器定义为public Circle(int radius)要求为int类型。


package test;

import java.util.Scanner;
class Circle{
    private int radius;
    //为radius添加set方法,接收用户输入的半径,如果用户输入半径为<=0,则让半径的值为2
    public void setter(int radius){
        if(radius<=0){
            radius=2;
        }
        else
            this.radius=radius;
    }
    //无参构造方法 ,给radius赋值为2,并输出信息:"This is a constructor with no para."
    public Circle(){
        radius=2;
        System.out.println("This is a constructor with no para.");
    }
    //有参构造方法 ,接收用户给的radius赋值,并输出"This is a constructor with para."(如果给的半径小于等于0,则赋默认值为2)
    public Circle(int radius){
        if(radius<=0){
            radius=2;
        }
        else
            this.radius=radius;
        System.out.println("This is a constructor with para.");
    }
    //为radius半径添加get方法,返回用户输入的半径
    public int getter(){
        return radius;
    }
    //求圆面积方法getArea(), π使用Math.PI代替
    public float getArea(){
        double area;
        area=Math.PI*radius*radius;
        return (float)area;
    }
    //定义toString方法
    public String toString(){
        return "Circle [radius=" + radius + "]";
    }
}
public class Main{
    public static void main(String[] args){
        int radius;
        Circle c1,c2,c3 = null;
        Scanner sc=new Scanner(System.in);
        //定义并创建Circle类对象c1,输出c1对象,求c1的面积并输出
        c1=new Circle();
        System.out.println(c1.toString());
        System.out.println(c1.getArea());
        //定义并创建Circle类对象c2,输出c2对象,求c2的面积并输出;
        c2=new Circle();
        System.out.println(c2.toString());
        System.out.println(c2.getArea());
        //从键盘接收整数半径,赋值给c2的半径,输出c2对象,求c2的面积并输出
        int r1=0;
        System.out.println("请输入c2的半径:");
        while(sc.hasNextInt()){
            r1= sc.nextInt();
            c2=new Circle(r1);
            System.out.println(c2.toString());
            System.out.println(c2.getArea());
            break;
        }

        //从键盘接收整数半径,用有参构造方法创建Circle类对象c3,输出c3对象,求c3的面积后输出
//        System.out.println("请输入c3的半径:");
//        while(sc.hasNextInt()){
//            c3=new Circle(sc.nextInt());
//        }
//        System.out.println(c3.toString());
//        System.out.println(c3.getArea());
        int r2=0;
        System.out.println("请输入c2的半径:");
        while(sc.hasNextInt()){
            r2= sc.nextInt();
            c3=new Circle(r2);
            System.out.println(c3.toString());
            System.out.println(c3.getArea());
            break;
        }
    }
}
//Main.java:55: error: incompatible types: boolean cannot be converted to int
//        c2=new Circle(sc.hasNextInt());
//                                   ^
//Main.java:59: error: incompatible types: boolean cannot be converted to int
//        c3=new Circle(sc.hasNextInt());
//                                   ^
//Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
//2 errors

结果如下:
This is a constructor with no para.
Circle [radius=2]
12.566371
This is a constructor with no para.
Circle [radius=2]
12.566371
请输入c2的半径:
3
This is a constructor with para.
Circle [radius=3]
28.274334
请输入c2的半径:
5
This is a constructor with para.
Circle [radius=5]
78.53982