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