1

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

错误代码

错误:默认构造函数无法处理 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);
    }
}
4

3 回答 3

3

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

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);
}
于 2013-03-05T22:46:18.907 回答
1

初始化代码是问题所在。

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);
    } ....
于 2013-03-05T22:47:35.347 回答
1

您正在构造一个 BufferedReader 并在构造函数之外读取它,这可能会引发 IOException。因此,您必须通过将此指令放入构造函数并在其 throws 子句中声明异常来处理此异常:

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);
}
于 2013-03-05T22:48:32.417 回答