平方数数学方法不工作(默认构造函数无法处理异常类型)



我的程序的目标是要求用户输入一个数字,然后使用创建的自定义方法对该数字进行平方并输出平方。然而,在尝试时出现了问题。请注意,这是我第一个使用用户输入方法的程序(完全是初学者)

错误代码

错误:默认构造函数无法处理异常类型由隐式超构造函数抛出的java.io.IOException。必须定义一个显式构造函数

代码:

import java.io.*;
public class Squareit 
{
    BufferedReader myInput=new BufferedReader(new InputStreamReader(System.in));
    {
        String input;
        int num;
        System.out.println("1-12");
        input = myInput.readLine();
        num = Integer.parseInt(input);
    }
    public void square(int num) 
    {
        int ans = (num * num);
        System.out.println(" is" + ans);
    }
    public static void main(String[] args) throws IOException 
    {
        Squareit t = new Squareit();
        t.square(0);
    }
}

将整个块移动到构造函数中,而不是作为隐式超构造函数。

private int num;
public SquareIt() throws IOException, NumberFormatException {
  BufferedReader myInput=new BufferedReader (new InputStreamReader (System.in));
  String input;
  System.out.println("1-12");
  input = myInput.readLine();
  num = Integer.parseInt (input);
}

初始化器代码有问题。

BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));
{ 
    String input;
    int num;
    System.out.println("1-12");
    input = myInput.readLine();
    num = Integer.parseInt (input);
}

你应该创建一个构造函数。

class SquareIt {
    BufferedReader myInput;
    String input;
    int num;
    public SquareIt() throws IOException, NumberFormatException {
        myInput = new BufferedReader (new InputStreamReader (System.in));
        System.out.println("1-12");
        input = myInput.readLine();
        num = Integer.parseInt (input);
    } ....

您正在构造BufferedReader并从构造函数外部读取它,这可能会抛出IOException。因此,必须将此指令放入构造函数中,并在其抛出子句中声明异常,从而处理此异常:

BufferedReader myInput;
public SquareIt() throws IOExcption {
    myInput = new BufferedReader (new InputStreamReader (System.in));
    String input;
    int num;
    System.out.println("1-12");
    input = myInput.readLine();
    num = Integer.parseInt (input);
}

请注意,只有在需要变量时才声明它,并立即初始化它,这是一个好习惯:

public SquareIt() throws IOExcption {
    myInput = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("1-12");
    String input = myInput.readLine();
    int num = Integer.parseInt (input);
}

最新更新