Java 使用sentinel控制回路,持续请求双值的程序
因此,我正在开发一个Java程序,它不断地向用户请求双值。我应该使用sentinel值为-999的sentinel控制回路。在使用try/catch块处理输入不匹配异常、ArrayStoreException和常规异常时,我需要使用ArrayListJava 使用sentinel控制回路,持续请求双值的程序,java,exception,sentinel,inputmismatchexception,arraystoreexception,Java,Exception,Sentinel,Inputmismatchexception,Arraystoreexception,因此,我正在开发一个Java程序,它不断地向用户请求双值。我应该使用sentinel值为-999的sentinel控制回路。在使用try/catch块处理输入不匹配异常、ArrayStoreException和常规异常时,我需要使用ArrayList public static void main(String[] args) { double d; double average; double max; double min;
public static void main(String[] args) {
double d;
double average;
double max;
double min;
ArrayList<Double> value = new ArrayList<Double>();
Scanner input = new Scanner(System.in);
System.out.println("Enter a double value (-999 to exit):");
d = input.nextDouble();
while (!value.equals(-999)) {
try {
System.out.println("Enter a double value (-999 to exit):");
value.add(input.nextDouble());
} catch (InputMismatchException e) {
System.out.println("That is not a valid double value.");
} catch (ArrayStoreException e) {
System.out.println("Duplicate value");
} catch (Exception e) {
System.out.println("Error");
}
}
}
在输入-999、应用ArrayStoreExceptions中的重复消息以及在输入失配异常后继续输入时,我当前在尝试完成程序时遇到问题
public static void main(String[] args) {
double d;
double average;
double max;
double min;
ArrayList<Double> value = new ArrayList<Double>();
Scanner input = new Scanner(System.in);
System.out.println("Enter a double value (-999 to exit):");
d = input.nextDouble();
while (!value.equals(-999)) {
try {
System.out.println("Enter a double value (-999 to exit):");
value.add(input.nextDouble());
} catch (InputMismatchException e) {
System.out.println("That is not a valid double value.");
} catch (ArrayStoreException e) {
System.out.println("Duplicate value");
} catch (Exception e) {
System.out.println("Error");
}
}
}
publicstaticvoidmain(字符串[]args){
双d;
双倍平均;
双峰;
双分钟;
ArrayList值=新的ArrayList();
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入双精度值(-999以退出):”;
d=输入.nextDouble();
而(!value.equals(-999)){
试一试{
System.out.println(“输入双精度值(-999以退出):”;
value.add(input.nextDouble());
}捕获(输入不匹配异常e){
System.out.println(“这不是有效的双精度值。”);
}捕获(ArrayStore异常){
System.out.println(“重复值”);
}捕获(例外e){
System.out.println(“错误”);
}
}
}
ArrayList
,而-999只是一个双精度
(实际上是一个int)。
您不想检查整个列表是否等于-999,只想检查最后输入的值是否为-999
ArrayList
Set
实现)
publicstaticvoidmain(字符串[]args){
double d=0.0;//d被设置为一些未使用的起始值,因此它将编译。
双倍平均;
双峰;
双分钟;
Set values=新的HashSet();
扫描仪输入=新扫描仪(System.in);
while(true){
试一试{
System.out.println(“输入双精度值(-999以退出):”;
d=输入.nextDouble();
}捕获(输入不匹配异常e){
System.out.println(“这不是有效的双精度值。”);
input.nextLine();
继续;
}捕获(例外e){
System.out.println(“错误”);
打破
}
如果(d==-999.)
打破
如果(!values.add(d))
System.out.println(“重复值”);
}
//System.out.println(值);
}
我还建议您将“value”重命名为“values”,以明确它代表多个值
希望这有帮助 arraylist永远不会等于double,也许您想根据输入的值进行测试?如果您想在输入-999之前请求多个输入,则需要在循环内请求输入,或者,就在循环之前。你能给我举个例子吗?我需要使用ArrayList作为作业的一部分,但谢谢,我应该能够使用它作为模板来帮助我计算它,所以我在输入-999时设法让程序结束,如果输入非双精度值,则发送错误消息,但现在我只需要了解如何使用ArrayStoreException检测重复值
public static void main(String[] args) {
double d = 0.0; //d is set to some unused starting value so it will compile.
double average;
double max;
double min;
Set<Double> values = new HashSet<Double>();
Scanner input = new Scanner(System.in);
while (true) {
try {
System.out.println("Enter a double value (-999 to exit):");
d = input.nextDouble();
} catch (InputMismatchException e) {
System.out.println("That is not a valid double value.");
input.nextLine();
continue;
} catch (Exception e) {
System.out.println("Error");
break;
}
if(d == -999.)
break;
else if(!values.add(d))
System.out.println("Duplicate value");
}
//System.out.println(values);
}