当InputMismatchException被抛出时,我进入了一个无限循环,我一生都无法找出原因。基本上,这个程序的主要目标是为用户输入的负数抛出异常,并确保用户实际上输入了一个整数(不是像“r45”这样的东西)。非常感谢任何帮助。谢谢你。
import java.util.*;
public class conversion{
static Scanner in = new Scanner (System.in);
static final double centimeters_per_inch = 2.54;
static final int inches_per_foot = 12;
public static void main (String [] args){
int feet;
int inches;
int totalInches;
double centimeters;
boolean done = false;
do{
try
{
System.out.print("Enter feet: ");
System.out.flush();
feet = in.nextInt();
System.out.println();
System.out.print("Enter inches: ");
System.out.flush();
inches = in.nextInt();
if (feet < 0 || inches < 0)
throw new NonNegative();
System.out.println();
done = true;
System.out.println("The numbers you entered are " + feet +" feet and " + inches+ " inches");
totalInches = inches_per_foot * feet + inches;
System.out.println();
System.out.println("The total number of inches = " + totalInches);
centimeters = totalInches * centimeters_per_inch;
System.out.println("The number of centimeteres = " + centimeters);
}
catch (NonNegative a){
System.out.println(a.toString());
}
catch(InputMismatchException e) {
System.out.println("This is not a number");
}
}while(!done);
}
}
在循环中捕获通常是一种反模式,原因有二。
所以你在这里得到了:
do {
try {
} catch () {
}
} while ()
更常见的是写...
try {
do {
} while ();
} catch () {
}
对于例外情况,应保留例外情况;您可能不应该将它们用作每次调用方法时都会发生的功能。
当发生< code > InputMismatchException 时,来自< code>Scanner的无效输入将通过< code>while循环发回,该过程将无限重复。调用< code>nextLine以使用来自< code>Scanner的非数字输入。这将防止未使用的数据被发送回环路
System.out.println("This is not a number " + in.nextLine());
我在我的android应用程序中使用增强for循环来迭代状态对象列表。 这将生成以下IndexOutOfBoundsException:java。lang.IndexOutOfBoundsException:索引0无效,大小为0 我意识到这是因为ArrayList的大小是0,这意味着它是空的。我的问题是,为什么它一开始就进入了循环,而不是为了保证这些问题不会发生而创建的增强for,以及如何阻止它。
我在Hackerrank上解决了一个任务。com,问题是这样的: 你有一个数组。这个数组包含数字。 现在输入两个数字: 第一个描述了一个总和 第二个描述了您添加在一起的索引量(序列长度) 最后你得到的序列的数量其总和就是你定义的数字 例如: 我为此写了这段代码: 由于我不知道需要多少次计数(例如,序列长度为3的6长度数组有4个序列(1,2,3,4 | 3,4,5 | 4,5,6)),当索引超出范围
我试图从方法中抛出异常,但当我编译下面的代码时 编译错误 发射装置。java:14:错误:找不到符号静态void getError()抛出^myException{ 符号:类myException 位置:类启动器 它说了些什么,它无法理解什么是
我有一个非常基本的函数,它搜索的数组列表,并返回与传递给它的参数匹配的帐户。但是,一旦抛出CustomerAccountNotFoundException,我的for循环就会中断。 我通过在异常后打印的值来测试这一点,该值一直被重置为0。如何在抛出异常后继续循环?我希望每次帐户不匹配时都抛出它,当它匹配时返回帐户。我还尝试过但不起作用。
问题内容: 我有一个关于Java中重新引发异常的非常简单的问题。 这是代码片段: 为什么我们需要在第一个版本中重新抛出,而第二个版本看起来更优雅?可能有什么好处,并且优先选择哪个版本? 问题答案: 你是对的。第二版更好。而且,第一个版本没有任何意义。除了异常的堆栈跟踪为“错误”之外,它的功能相同。 有“重新抛出”异常的原因如下: 如果您之前有事要做。 如果捕获一种类型的异常并抛出另一种类型的异常:
这是我连接HTTP的代码。 这就是android。操作系统。NetworkOnMainThreadException 请帮忙。