方数数学方法不起作用(默认构造函数不能处理异常类型)

时间:2013-03-05 22:39:11

标签: java

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

错误代码

  

错误:默认构造函数无法处理异常类型   隐式超级构造函数抛出的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);
    }
}

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分: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);
    } ....

答案 2 :(得分: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);
}