目录
难点三,如何能保证当输入的数中只有一个数字时OnlyOneException,当两个数都不是数字时NoOperandException;
要求:从键盘输入两个数,求和,自定义两个异常,一个为,当输入的数中只有一个数字时OnlyOneException,当两个数都不是数字时NoOperandException;
难点一,判断输入的内容是否是数字
public static boolean isNumber (String str){
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i)))
return false;
}
return true;
}
难点二,把字符转换为数字
int a = '1';
int inta=Integer.parseInt(a);
将字符'1'转换成整型1
int inta=Integer.parseInt(a);
int intb=Integer.parseInt(b);
int add = inta+intb;
难点三,如何能保证当输入的数中只有一个数字时OnlyOneException,当两个数都不是数字时NoOperandException;
如果把 !isNumber(a)||!isNumber(b) 先行判断,无论你是输入一个字母一个数字,还是两个字母,都会成立,但如果我把 !isNumber(a)&&!isNumber(b) 先判断,只有当两个都是字母时,该判断才成立,这点想了很久
if(!isNumber(a)&&!isNumber(b)) {
throw new NoOperandException ();
}
else if(!isNumber(a)||!isNumber(b)) {
throw new OnlyOneException ();
}
步骤:
一、创建TowAdd类,我把主方法也放里面了,其实分开来比较好,没那么长
package 异常;
import java.util.Scanner;
public class TowAdd {
String a,b;
public int add(String a ,String b) throws OnlyOneException,NoOperandException{
if(!isNumber(a)&&!isNumber(b)) {
throw new NoOperandException ();
}
else if(!isNumber(a)||!isNumber(b)) {
throw new OnlyOneException ();
}
int inta=Integer.parseInt(a);
int intb=Integer.parseInt(b);
int add = inta+intb;
return add;
}
public static boolean isNumber (String str){
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i)))
return false;
}
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入两个数字");
Scanner sc = new Scanner(System.in);
TowAdd ta = new TowAdd();
String date1 = sc.nextLine();
String date2 = sc.nextLine();
try {
System.out.println(ta.add(date1, date2));
} catch (OnlyOneException e) {
// TODO: handle exception
e.printStackTrace();
} catch (NoOperandException e) {
e.printStackTrace();
}
}
}
二、创建NoOperandException类,注意要继承Exception
package 异常;
public class NoOperandException extends Exception{
public NoOperandException() {
System.out.println("你输入两个都不是数字");
}
}
三、创建OnlyOneException 类,注意要继承Exception
package 异常;
public class OnlyOneException extends Exception{
public OnlyOneException() {
System.out.println("你只输入了一个有效数字");
}
}
注意,真正编写的时候顺序不是那样的,这里我只是比较方便叙述,才弄成这样的步骤
测试结果