、编写程序,实现从命令行输入三个数值参数作为三角形的三条边,以此构造一个三角形。程序应该实现如下功能:
-->检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
-->检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
-->检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
-->检查输入的命令行参数的三个数值是否能够构造一个三角形,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
请高手们帮帮忙~~~~~~~~~~~~~~~~~~~~~~~~~~~`
-->检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
-->检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
-->检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
-->检查输入的命令行参数的三个数值是否能够构造一个三角形,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
请高手们帮帮忙~~~~~~~~~~~~~~~~~~~~~~~~~~~`
public static void main(String[] args) throws Exception {
if (args == null || args.length != 3) {
throw new ArrayIndexOutOfBoundsException("");
} double[] intArgs = new double[3];
for (int i = 0; i < args.length; i++) {
try {
intArgs[i] = Double.parseDouble(args[i]);
} catch (Exception e) {
throw new NumberFormatException("");
} if(intArgs[i] <= 0L){
throw new IllegalArgumentException("");
}
}
Arrays.sort(intArgs);
if(intArgs[0] + intArgs[1] <= intArgs[2]
|| intArgs[2] - intArgs[1] >= intArgs[0]){
throw new InvailEdgesException("");
}
}
}
public class Test { /**
* 编写程序,实现从命令行输入三个数值参数作为三角形的三条边,以此构造一个三角形。程序应该实现如下功能:
* -->检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
* -->检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
* -->检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
* -->检查输入的命令行参数的三个数值是否能够构造一个三角形
* ,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
*
* @throws InvailEdgesException
*/
public static void main(String[] args) throws InvailEdgesException {
// TODO Auto-generated method stub // 检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
if (args.length != 3) {
throw new ArrayIndexOutOfBoundsException();
}
for (int i = 0; i < args.length; i++) {
// 检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
if (Character.isDigit(Integer.valueOf(args[i])))
throw new NumberFormatException();
// 检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
if (Integer.valueOf(args[i]) < 0)
throw new IllegalArgumentException();
}
int a = Integer.valueOf(args[0]);
int b = Integer.valueOf(args[1]);
int c = Integer.valueOf(args[2]);
if (a >= b + c || b >= a + c || c >= a + b)
throw new InvailEdgesException("不能够构造一个三角形"); }
}class InvailEdgesException extends Exception {
public InvailEdgesException(String message) {
super(message);
}
}
public class Test { /**
* 编写程序,实现从命令行输入三个数值参数作为三角形的三条边,以此构造一个三角形。程序应该实现如下功能:
* -->检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
* -->检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
* -->检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
* -->检查输入的命令行参数的三个数值是否能够构造一个三角形
* ,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
*/
public static void main(String[] args) throws InvailEdgesException {
// TODO Auto-generated method stub // 检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
if (args.length != 3) {
throw new ArrayIndexOutOfBoundsException();
}
for (int i = 0; i < args.length; i++) {
// 检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
if (Character.isDigit(Integer.valueOf(args[i])))
throw new NumberFormatException();
// 检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
if (Integer.valueOf(args[i]) < 0)
throw new IllegalArgumentException();
} // 三角形的三条边
int a = Integer.valueOf(args[0]);
int b = Integer.valueOf(args[1]);
int c = Integer.valueOf(args[2]);
// 检查输入的命令行参数的三个数值是否能够构造一个三角形
// ,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
if (a >= b + c || b >= a + c || c >= a + b)
throw new InvailEdgesException("不能够构造一个三角形"); }
}class InvailEdgesException extends Exception {
public InvailEdgesException(String message) {
super(message);
}
}
编译没错但是打印出的时候出现ArrayIndexOutOfBoundsException数组下标越界.这是什么原因麻烦再看看
public class Triangle { /**
* 编写程序,实现从命令行输入三个数值参数作为三角形的三条边,以此构造一个三角形。程序应该实现如下功能:
* -->检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
* -->检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
* -->检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
* -->检查输入的命令行参数的三个数值是否能够构造一个三角形
* ,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
*/
public static void main(String[] args) throws InvailEdgesException {
// TODO Auto-generated method stub // 检查用户输入的命令行参数是否足够,如果不够三个参数,则程序可能产生ArrayIndexOutOfBoundsException异常
if (args.length != 3) {
throw new ArrayIndexOutOfBoundsException("请输入三个参数!");
}
for (int i = 0; i < args.length; i++) {
// 检查输入的命令行参数是否为数值格式,如果输入的数值参数格式错误,则程序可能产生NumberFormatException异常
try {
Integer.valueOf(args[i]);
} catch (Exception e) {
throw new NumberFormatException("请您输入数值!");
}
// 检查输入的命令行参数中是否有负值,如果有负值,则程序可能产生IiegalArgumentException异常
if (Integer.valueOf(args[i]) < 0)
throw new IllegalArgumentException("请输入整数!");
} // 三角形的三条边
int a = Integer.valueOf(args[0]);
int b = Integer.valueOf(args[1]);
int c = Integer.valueOf(args[2]);
// 检查输入的命令行参数的三个数值是否能够构造一个三角形
// ,如果不能构造一个三角形,则程序可能产生InvailEdgesException异常(InvailEdgesException为自定义异常)
if (a >= b + c || b >= a + c || c >= a + b)
throw new InvailEdgesException("不能够构造一个三角形");
System.out.println("你输入的三条边可以构成三角形");
}
}
//自定义的异常类
class InvailEdgesException extends Exception {
public InvailEdgesException(String message) {
super(message);
}
}