本周预期是分析字符串转换数值类型时候发生的异常。
在C#中:
int.Parse(String str): 这种方法是将数字内容的字符串转换为int类型。
如果字符串的内容为Null ,则抛出ArgumentNullException异常;
如果字符串内容不是数字,则抛出FormatException异常。
使用该方法只能处理字符串的内容,而且转换后的字符串内容要在int类型的可表示范围之内。
在Java中:
java.lang.Integer.parseInt(String s, int radix) 方法解析的字符串参数s作为一个有符号整数的基数指定的第二个参数基数
以下是java.lang.Integer.parseInt()方法的声明:
public static int parseInt(String s, int radix) throws NumberFormatException
参数
-
s -- This is a String containing the integer representation to be parsed.
-
radix -- This is the radix to be used while parsing s.
返回值
此方法返回指定基数中的字符串参数表示的整数.
异常
-
NumberFormatException --如果字符串不包含一个可分析的整数.
故,在C#中出现的两种异常,在Java中都归为了
NumberFormatException
下面 是Java程序实例测试:
程序界面:
当输入为111q,即含有非法字符q时,抛出异常
当输入超过了int能表示的范围时,抛出异常
当输入为null(空)时,抛出的异常
当输入全部为字母的时,抛出异常
输入为正确的int字符时,输出正确的parse得到的值
下面是该程序所使用的Java 代码:
1 int count=0; 2 public void start(Stage primaryStage) { 3 primaryStage.setTitle("Form"); 4 AnchorPane root = new AnchorPane(); 5 HBox hbox1 = new HBox(8); 6 final TextField textfield = new TextField(); 7 textfield.setPrefColumnCount(25); 8 textfield.setPrefWidth(180); 9 hbox1.setAlignment(Pos.CENTER_LEFT);10 hbox1.getChildren().addAll(new Label("输入: "), textfield);11 HBox hbox2 = new HBox(20);12 Button btn = new Button();13 btn.setText("确定");14 final Text text1 = new Text();15 final Text text2 = new Text();16 btn.addEventHandler(MouseEvent.MOUSE_CLICKED,17 new EventHandler() {18 public void handle(MouseEvent event) {19 text1.setText(null);20 text2.setText(null);21 String textString = textfield.getText().toString();22 char[] textChar = textString.toCharArray();23 System.out.println(textString);24 25 try26 {27 int result = Integer.parseInt(textfield.getText());28 text2.setText("转化结果:"+ Integer.toString(result));29 30 }31 catch (Exception exception)32 {33 text1.setText("输入异常\n"+exception.toString());34 }35 }36 });37 hbox2.getChildren().addAll(btn, text1,text2);38 AnchorPane.setTopAnchor(hbox1, 40.0);39 AnchorPane.setLeftAnchor(hbox1, 10.0);40 AnchorPane.setTopAnchor(hbox2, 90.0);41 AnchorPane.setLeftAnchor(hbox2, 20.0);42 root.getChildren().addAll(hbox1, hbox2);43 primaryStage.setScene(new Scene(root, 250, 120));44 primaryStage.show();45 }