Java中未处理的异常类型IOException

Mit*_*tro 0 java

我刚刚开始使用Java,因此我犯了很多错误,我已经解决并了解了很多错误,但现在我遇到了输入问题.我看到有两种输入:InputBufferedReader和Scanner,但我读到第一种更好(我不知道为什么),所以我正在使用它.

我得到的错误是: IOException异常

import java.io.InputStreamReader;
import java.io.BufferedReader;

public class Cerchio{

  private float r;
  private float area;
  private float cfr;
  final double pi = 3.14;


  public static void main(String[] args){
    System.out.println("Programma cerchio\n");

    Cerchio cerchio = new Cerchio(); 
    cerchio.getR();
    cerchio.c_cfr();
    cerchio.c_area();
    System.out.println("La circonferenza è: " + cerchio.cfr);
    System.out.println("L area è: " + cerchio.area);
  }

  private float getR(){
    InputStreamReader input = new InputStreamReader(System.in);
    BufferedReader num = new BufferedReader(input);

    try{
      String sr = num.readLine();
      r = Float.valueOf(sr).floatValue();
    } catch(NumberFormatException nfe){
        System.out.println("Incorrect!!!");
      }
    return r;
  }

  private float c_cfr(){
    cfr =(float)(2 * pi * r); //casting
    return cfr;
  }

  private float c_area(){
    area = (float)(pi * (r*r));
    return area;
 }

}
Run Code Online (Sandbox Code Playgroud)

可能还有其他的误区,但我不知道怎么回过头来看看这个.

怎么了?谢谢!

PS:我读过这篇文章,但我不明白为什么以及如何运作

Ade*_*ros 5

Alessio,在Java中,您有两种类型的例外:

  • 例外:他们被检查
  • 运行时异常:未选中

当方法可以触发"已检查"异常时,您必须处理它.

为此,您有两种方法:

  • 在方法签名的末尾添加一个"抛出IOException"(这是你发布的链接所暗示的)
  • 使用try catch块处理您的异常.

在您的情况下,IOException是一个"已检查"的异常,因此您应该向您的getR方法添加"throws IOException" 或使用try catch处理它.

PS:如果你正在学习java,最好使用像eclipse这样的IDE,你会更容易理解错误,因为它会指向你的一些文字高亮,它会为你提供解决方案.