Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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_Java.util.scanner - Fatal编程技术网

如何在Java中显示错误消息

如何在Java中显示错误消息,java,java.util.scanner,Java,Java.util.scanner,我是一个初学者,我必须编写一个代码,根据用户给我的半径计算面积和周长。这一部分很简单,但老师也希望我只接受有效的整数,并让用户在输入不正确时重新输入值 因此,我可以让它显示每种情况下的错误消息,但输入负整数时除外: import java.util.Scanner; public class GetCircle { public static void main(String []args) { Scanner input = new Scanner(Syst

我是一个初学者,我必须编写一个代码,根据用户给我的半径计算面积和周长。这一部分很简单,但老师也希望我只接受有效的整数,并让用户在输入不正确时重新输入值

因此,我可以让它显示每种情况下的错误消息,但输入负整数时除外:

 import java.util.Scanner;
 public class GetCircle
 {
     public static void main(String []args)
     {

    Scanner input = new Scanner(System.in);
     int radius;
     do {
    System.out.print("Please enter size of radius (Must be integer): ");
    while (!input.hasNextInt()) {
        System.out.print("That is not a valid number, please try again :");
        input.next();
    }

    radius = input.nextInt();

    } while (radius < 0);

    System.out.println("The radius is: " + radius);

    }
}
import java.util.Scanner;
公共类GetCircle
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
整数半径;
做{
系统输出打印(“请输入半径大小(必须为整数):”;
而(!input.hasNextInt()){
System.out.print(“这不是一个有效的数字,请重试:”);
input.next();
}
半径=输入。nextInt();
}而(半径<0);
System.out.println(“半径为:“+radius”);
}
}
这就是我得到的结果:

请输入半径大小(必须为整数):aaa

该号码无效,请重试:4.5555

这不是有效数字,请重试:-5

请输入半径大小(必须为整数):-5

请输入半径大小(必须是整数):-8.777

这不是有效数字,请重试:-4

请输入半径大小(必须为整数):

**所以当它是一个负整数时,它不会显示错误消息


我该如何解决这个问题呢?

有很多方法,但对于初学者来说,最简单的方法是在
半径
赋值和外部while循环结束之间添加
if
语句:

 if (radius < 0) {
    System.out.print("The radius must not be negative, please try again :");
 }
if(半径<0){
System.out.print(“半径不能为负数,请重试:”;
}

如果我答对了你的问题,那么你就不需要使用
!input.hasNextInt()
。你就是这样做的

import java.util.Scanner;

public class GetCircle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
    int radius = 0;
    System.out.print("Please enter size of radius (Must be integer): ");
    while (true){
        if(input.hasNextInt()){ 
        radius = input.nextInt();
        if (radius < 0){
            System.out.println("That is not a valid number, please try again :");
            System.out.println("Please enter size of radius (Must be integer): ");              
        }   else {
        System.out.println("The radius is: " + radius);
        }
        } else {
            System.out.println("That is not a valid number, please try again :");
            System.out.println("Please enter size of radius (Must be integer): ");
            input.next();

        }
    }   
}
}
import java.util.Scanner;
公共类GetCircle{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int半径=0;
系统输出打印(“请输入半径大小(必须为整数):”;
while(true){
if(input.hasNextInt()){
半径=输入。nextInt();
如果(半径<0){
System.out.println(“这不是一个有效的数字,请重试:”;
System.out.println(“请输入半径大小(必须为整数):”;
}否则{
System.out.println(“半径为:“+radius”);
}
}否则{
System.out.println(“这不是一个有效的数字,请重试:”;
System.out.println(“请输入半径大小(必须为整数):”;
input.next();
}
}   
}
}

请不要大声喊叫。另外,请格式化您的问题,以便我们能够最佳地为您提供帮助。提示:
-5
关于
hasNextInt
是可以的,我意识到了这一点,我通过底部的while(radius<0)捕捉到错误,但我希望它显示错误消息,我被卡住了。我不知道怎么做。我考虑过使用:while(!input.hasNextInt()| | radius<0),但这也不起作用。我们还没有学会使用try-and-catch,因此我无法使用它。请输入半径的大小(必须是整数):-5半径是:-5,因此它没有显示错误消息…但是现在当用户键入4.5或a时,一些不是整数的东西,程序只是退出……如果你看原始代码,它会捕获所有错误。因此,如果用户键入R、7.5或-4,则会使他再次输入。但是当它是一个负整数时,我不能让它显示错误消息。这是唯一的问题…我做了,但我的名声不到15。。。我可以问几个问题吗?这不起作用,因为您得到:这不是一个有效的数字,请重试:-5半径不能为负,请重试:请输入半径大小(必须为整数):因此它现在重复两条消息,然后只需将第一个System.out.print()调用移到“do”之前,所以它在外循环之外。你知道如何在JOptionPane中使用相同的原理吗?我不太熟悉。