Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在无限循环中引发异常。我找不到出路。_Java - Fatal编程技术网

Java 在无限循环中引发异常。我找不到出路。

Java 在无限循环中引发异常。我找不到出路。,java,Java,当抛出InputMismatchException时,我进入了一个无限循环,我一辈子都不知道为什么。基本上,这个程序的主要目标是对用户输入的负数抛出一个异常,并确保用户实际输入一个整数(而不是类似“r45”的东西)。任何帮助都将不胜感激。多谢各位 import java.util.*; public class conversion{ static Scanner in = new Scanner (System.in); static final double centime

当抛出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);
 }
import java.util.*;
公共类转换{
静态扫描仪输入=新扫描仪(系统输入);
静态最终双厘米每英寸=2.54;
静态最终整数英寸每英尺=12;
公共静态void main(字符串[]args){
内特英尺;
整数英寸;
整数英寸;
双厘米;
布尔完成=假;
做{
尝试
{
系统输出打印(“输入英尺:”;
System.out.flush();
英尺=in.nextInt();
System.out.println();
系统输出打印(“输入英寸:”;
System.out.flush();
英寸=in.nextInt();
如果(英尺<0 | |英寸<0)
抛出新的非负();
System.out.println();
完成=正确;
System.out.println(“您输入的数字是“+英尺+”英尺和“+英寸+”英寸”);
总英寸=英寸每英尺*英尺+英寸;
System.out.println();
System.out.println(“总英寸数=”+总英寸);
厘米=总英寸*厘米每英寸;
System.out.println(“厘米数=+厘米);
}
捕获(非负a){
System.out.println(a.toString());
}
捕获(输入不匹配异常e){
System.out.println(“这不是一个数字”);
}
}而(!完成);
}

}

当发生
输入不匹配异常时,来自
扫描仪的无效输入将通过
while
循环发回,并且该过程将无限重复。调用
nextLine
以使用来自
扫描仪的非数字输入。这将防止未使用的数据被发送回循环

System.out.println("This is not a number " + in.nextLine());

当发生
输入不匹配异常
时,来自
扫描仪
的无效输入将通过
while
循环发送回,并且该过程将无限重复。调用
nextLine
以使用来自
扫描仪的非数字输入。这将防止未使用的数据被发送回循环

System.out.println("This is not a number " + in.nextLine());

当发生
输入不匹配异常
时,来自
扫描仪
的无效输入将通过
while
循环发送回,并且该过程将无限重复。调用
nextLine
以使用来自
扫描仪的非数字输入。这将防止未使用的数据被发送回循环

System.out.println("This is not a number " + in.nextLine());

当发生
输入不匹配异常
时,来自
扫描仪
的无效输入将通过
while
循环发送回,并且该过程将无限重复。调用
nextLine
以使用来自
扫描仪的非数字输入。这将防止未使用的数据被发送回循环

System.out.println("This is not a number " + in.nextLine());

由于两个原因,在循环中使用catch通常是一种反模式

  • 你偶尔会有这种奇怪的行为,而且
  • 与自己显式检查数据相比,异常速度较慢 那么你在这里得到了什么:

    do { 
      try {
    
      } catch () {
      }
    } while ()
    
    更常见的是

    try {
      do {
    
      } while ();
    } catch () {
    
    }
    

    对于例外情况,应保存例外情况;您可能不应该将它们用作每次调用方法时都会发生的功能。

    在循环中包含catch通常是一种反模式,原因有二

  • 你偶尔会有这种奇怪的行为,而且
  • 与自己显式检查数据相比,异常速度较慢 那么你在这里得到了什么:

    do { 
      try {
    
      } catch () {
      }
    } while ()
    
    更常见的是

    try {
      do {
    
      } while ();
    } catch () {
    
    }
    

    对于例外情况,应保存例外情况;您可能不应该将它们用作每次调用方法时都会发生的功能。

    在循环中包含catch通常是一种反模式,原因有二

  • 你偶尔会有这种奇怪的行为,而且
  • 与自己显式检查数据相比,异常速度较慢 那么你在这里得到了什么:

    do { 
      try {
    
      } catch () {
      }
    } while ()
    
    更常见的是

    try {
      do {
    
      } while ();
    } catch () {
    
    }
    

    对于例外情况,应保存例外情况;您可能不应该将它们用作每次调用方法时都会发生的功能。

    在循环中包含catch通常是一种反模式,原因有二

  • 你偶尔会有这种奇怪的行为,而且
  • 与自己显式检查数据相比,异常速度较慢 那么你在这里得到了什么:

    do { 
      try {
    
      } catch () {
      }
    } while ()
    
    更常见的是

    try {
      do {
    
      } while ();
    } catch () {
    
    }
    

    对于例外情况,应保存例外情况;您可能不应该将它们用作每次调用方法时都会发生的功能。

    如果问题在于读取输入,那么在捕获异常后,您的代码是否会返回并再次尝试读取,并且(可以预见)得到相同的结果?如果没有,请描述一下这个“无限循环”中发生了什么。这与读取输入的问题非常相似,在捕获到异常后,您的代码是否会返回并再次尝试读取,并且(可以预见)得到相同的结果?如果没有,请描述一下这个“无限循环”中发生了什么。这与读取输入的问题非常相似,在捕获到异常后,您的代码是否会返回并再次尝试读取,并且(可以预见)得到相同的结果?如果没有,请描述一下这个“无限循环”中发生了什么。这与读取输入的问题非常相似,在捕获到异常后,您的代码是否会返回并再次尝试读取,并且(可以预见)得到相同的结果?如果没有,请删除