在其中声明一一个由八个
名字组成的数组。你自己的名字应该是数组中的名字。例如,我的名
字是Teemu,因此我的数组看起来像这样:
字符串[]名称{"Teemu"、"Bill" 、"Jaakko"、 "Mary"、 "Hikka" 、"Helen”、 "Ja
ck"、“Philippe' };
编写一个try块,首先提示用户输入一个数字,然后
1)在数组中显示相应的名称,即数字是数组中请求的位置。
2)显示数字列表的下一 个对应名称,即数组中的请求位置+1) 3)显示(1-100) 除以数字的某个整数的值
然后编写三个捕获块来捕获以下异常:ArrayIndexOutOfBoundsException
此catch块捕获用户输入超出范围的数字时引发的潜在ArraylndexOutOfBoundsException。catch块还应该显示一条错误消息。
算术异常
.此catch块捕获潜在的算术异常,例如,当用户输入一个数字时抛出,生成零除方案。catch块还应该通过使用方法显示错误消息。
数字形式异常
此catch块捕获潜在的NumberFormatException。e、当用户输4入字母而不是数字时抛出。catch块还应该显示一条错误消息。
将文件另存为BadUserNumber. JAVA
注意:使用“Scanner”类接受用户的输入值。。
程序代码大概就是这样:
import java.util.Scanner;
public class BadUserNumber {
String[] names = {"Teemu", "Bill", "Jaakko", "Mary", "Hikka", "Helen", "Jack", "Philippe"};
int randomIdx = -1;
public void printInfo(int idx) {
int nextIdx = idx + 1;
System.out.print("current: ");
catchPrint(idx);
System.out.print("next:");
catchPrint(nextIdx);
System.out.print("random:");
catchPrint(randomIdx);
}
public void catchPrint(int idx) {
try {
int randomIdx = (int) (Math.random() * 100) / idx;
this.randomIdx = randomIdx;
System.out.println(names[idx]);
} catch (IndexOutOfBoundsException e) {
System.out.println("输入的数字超过数组边界:" + e);
} catch (NumberFormatException e) {
System.out.println("输入的不是数字:" + e);
} catch (ArithmeticException e) {
System.out.println("除以零运算错误" + e);
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
try {
String number = in.next();
BadUserNumber badUserNumber = new BadUserNumber();
badUserNumber.printInfo(Integer.parseInt(number));
} catch (NumberFormatException e) {
System.out.println("输入的不是数字:" + e);
}
}
}
测试过了,应该没什么问题。
import java.util.Scanner;
public class BadUserNumber {
public static void main(String[] args){
String[] nameArray={"Teemu","Bill","Jaakko", "Mary", "Hikka" ,"Helen ", "Jack", "Philippe "};
try{
Scanner in=new Scanner(System.in);
System.out.println("请输入一个数字");
String input = in.next();
int number=Integer.valueOf(input);
//在数组中显示相应的名称,即数字是数组中请求的位置。
System.out.println(nameArray[number]);
//显示数字列表的下一 个对应名称,即数组中的请求位置+1
System.out.println(nameArray[number+1]);
//显示(1-100) 除以数字的某个整数的值
System.out.println(99/number);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("ArrayIndexOutOfBoundsException:您输入的数字超过数组范围了");
}catch (NumberFormatException e){
System.out.println("NumberFormatException:您输入的不是数字哦");
}catch (ArithmeticException e){
System.out.println("ArithmeticException:除数不能为0哦");
}
}
}
可以试一下,看看是这个意思吗
public static void main(String[] args) {
// 创建数组
String[] arr = {"Teemu","Bill" ,"Jaakko", "Mary", "Hikka" ,"Helen", "Jack", "Philippe" };
Scanner scanner = new Scanner(System.in);
int index = scanner.nextInt();
try {
for (int i = 0; i < arr.length; i++) {
if (index == i) {
// 1)在数组中显示相应的名称,即数字是数组中请求的位置。
System.out.println(arr[i]);
//2)显示数字列表的下一 个对应名称,即数组中的请求位置+1)
System.out.println("下一个人名为:" + arr[i + 1]);
}
// 3)显示(1-100) 除以数字的某个整数的值
int randomIdx = (int) (Math.random() * 100) / index;
System.out.println(arr[randomIdx]);
}
} catch (IndexOutOfBoundsException e) {
System.out.println("输入的数字超过数组边界:" + e);
} catch (NumberFormatException e) {
System.out.println("输入的不是数字:" + e);
} catch (ArithmeticException e) {
System.out.println("除以零运算错误" + e);
}
}
代码如下:
public static void main(String[] args) {
String[] usernames = {"Teemu","Bill" ,"Jaakko", "Mary", "Hikka" ,"Helen", "Jack", "Philippe" };
try {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个数字");
String posStr = scanner.next();
int pos = Integer.parseInt(posStr);
System.out.println("请输入的数字对应的名称是:" + usernames[pos]);
System.out.println("请输入的数字对应的下一个名称是:" + usernames[pos+1]);
// 生成一个[1,100]的随机数
int randomInt = new Random().nextInt(100 + 1) + 1;
int div = randomInt/pos;
System.out.println("除以输入数字的随机数是:" + randomInt);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("你输入的数字超出范围");
} catch (ArithmeticException e) {
System.out.println("输入的数字0不能做为除数");
} catch (NumberFormatException e) {
System.out.println("你输入的数字不合法");
}
}
如有帮助,请采纳,十分感谢!