我的程序的目标是要求用户输入一个数字,然后使用创建的自定义方法对该数字进行平方并输出方形。但是,尝试这个问题时出现了问题。请注意这是我的第一个使用用户输入方法的程序(完全初学者)
错误代码
错误:默认构造函数无法处理异常类型 隐式超级构造函数抛出的
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);
}
}
答案 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);
}