Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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,首先,我必须说我对Java相当陌生 我需要使用Scanner输入一个Double值,并需要检查它是否在给定范围内。如果它在给定的范围内,它应该返回值,否则它应该要求重新输入一个新的数字 我尽了最大努力,但还是有编译错误。请告诉我应该如何在我的代码中解决这个问题 class Find { public static void main(String args[]) { System.out.println(val(1, 100)); Scanner inp

首先,我必须说我对Java相当陌生

我需要使用
Scanner
输入一个
Double
值,并需要检查它是否在给定范围内。如果它在给定的范围内,它应该返回值,否则它应该要求重新输入一个新的数字

我尽了最大努力,但还是有编译错误。请告诉我应该如何在我的代码中解决这个问题

class Find {

    public static void main(String args[]) {
        System.out.println(val(1, 100));
        Scanner input = new Scanner(System.in);
        double number;
        System.out.print("Enter a number: ");
        number = input.nextDouble();
    }

    private static String val(int minValue, int maxValue) {
        if (number < minValue || number > maxValue) {
            return "try again";
        } else {
            return (number);
        }
    }
}
类查找{
公共静态void main(字符串参数[]){
系统输出println(val(1100));
扫描仪输入=新扫描仪(System.in);
双数;
System.out.print(“输入一个数字:”);
number=input.nextDouble();
}
私有静态字符串val(int-minValue,int-maxValue){
如果(数字<最小值| |数字>最大值){
返回“重试”;
}否则{
报税表(编号);
}
}
}
几点:

  • val
    函数当前不知道名为
    number
    的变量。您希望将
    编号
    值传递给
    val
    函数
  • 由于
    val
    函数的返回类型为
    String
    ,因此它必须返回
    String
  • 私有静态字符串val(双数字、双最小值、双最大值){
    如果(数字<最小值| |数字>最大值){
    返回“重试”;
    }
    否则{
    返回字符串.valueOf(number);
    }
    }
    
    几点:

  • val
    函数当前不知道名为
    number
    的变量。您希望将
    编号
    值传递给
    val
    函数
  • 由于
    val
    函数的返回类型为
    String
    ,因此它必须返回
    String
  • 私有静态字符串val(双数字、双最小值、双最大值){
    如果(数字<最小值| |数字>最大值){
    返回“重试”;
    }
    否则{
    返回字符串.valueOf(number);
    }
    }
    
    您可以去掉大部分代码,然后执行以下操作:

    System.out.print( "Enter a number: " ); 
    number = input.nextDouble();
    while ((number < minValue) || (number > maxValue)) {
        System.out.println( "Number out of range." ); 
        System.out.print( "Enter a number: " ); 
        number = input.nextDouble();
    }
    
    System.out.print(“输入一个数字:”);
    number=input.nextDouble();
    while((数字<最小值)| |(数字>最大值)){
    System.out.println(“数字超出范围”);
    System.out.print(“输入一个数字:”);
    number=input.nextDouble();
    }
    
    下面是一个完整的程序,显示了该代码段的作用:

    import java.util.Scanner;
    
    public class Find {
        public static double getNum (
            double minVal,
            double maxVal,
            String prompt,
            String errPrompt
        ) {
            Scanner input = new Scanner(System.in);
            System.out.print (prompt); 
            double number = input.nextDouble();
            while ((number < minVal) || (number > maxVal)) {
                System.out.print (errPrompt); 
                number = input.nextDouble();
            }
            return number;
        }
    
        public static void main(String args[]) {
            System.out.println (getNum (1, 100, "Enter a number: ", "Try again: "));
        }
    }
    
    import java.util.Scanner;
    公共类查找{
    公共静态双getNum(
    双米瓦尔,
    双maxVal,
    字符串提示符,
    字符串错误提示
    ) {
    扫描仪输入=新扫描仪(System.in);
    系统输出打印(提示);
    double number=input.nextDouble();
    而((数字<最小值)| |(数字>最大值)){
    System.out.print(错误提示);
    number=input.nextDouble();
    }
    返回号码;
    }
    公共静态void main(字符串参数[]){
    System.out.println(getNum(1100,“输入一个数字:”,“重试:”);
    }
    }
    
    您可以去掉大部分代码,然后执行以下操作:

    System.out.print( "Enter a number: " ); 
    number = input.nextDouble();
    while ((number < minValue) || (number > maxValue)) {
        System.out.println( "Number out of range." ); 
        System.out.print( "Enter a number: " ); 
        number = input.nextDouble();
    }
    
    System.out.print(“输入一个数字:”);
    number=input.nextDouble();
    while((数字<最小值)| |(数字>最大值)){
    System.out.println(“数字超出范围”);
    System.out.print(“输入一个数字:”);
    number=input.nextDouble();
    }
    
    下面是一个完整的程序,显示了该代码段的作用:

    import java.util.Scanner;
    
    public class Find {
        public static double getNum (
            double minVal,
            double maxVal,
            String prompt,
            String errPrompt
        ) {
            Scanner input = new Scanner(System.in);
            System.out.print (prompt); 
            double number = input.nextDouble();
            while ((number < minVal) || (number > maxVal)) {
                System.out.print (errPrompt); 
                number = input.nextDouble();
            }
            return number;
        }
    
        public static void main(String args[]) {
            System.out.println (getNum (1, 100, "Enter a number: ", "Try again: "));
        }
    }
    
    import java.util.Scanner;
    公共类查找{
    公共静态双getNum(
    双米瓦尔,
    双maxVal,
    字符串提示符,
    字符串错误提示
    ) {
    扫描仪输入=新扫描仪(System.in);
    系统输出打印(提示);
    double number=input.nextDouble();
    而((数字<最小值)| |(数字>最大值)){
    System.out.print(错误提示);
    number=input.nextDouble();
    }
    返回号码;
    }
    公共静态void main(字符串参数[]){
    System.out.println(getNum(1100,“输入一个数字:”,“重试:”);
    }
    }
    
    连同关于您的
    val
    函数的注释,您不知道
    数字是什么,似乎以下是您实际希望程序执行的操作:

    import java.util.Scanner;
    
    class Find {
    
      public static void main (String args[]) {
        Scanner input = new Scanner(System.in); 
        double number;
    
        do {
            System.out.print("Enter a number: "); 
            number = input.nextDouble();
        } while(!isValid(number));
      }
    
      private static boolean isValid(double number){
        int minValue = 1;
        int maxValue = 100;
    
        if (number < minValue || number > maxValue ) {
           System.out.println("Try again");
           return false;
        }
        else {
           return true;
        }
      }
    } 
    
    import java.util.Scanner;
    类查找{
    公共静态void main(字符串参数[]){
    扫描仪输入=新扫描仪(System.in);
    双数;
    做{
    System.out.print(“输入一个数字:”);
    number=input.nextDouble();
    }而(!isValid(number));
    }
    私有静态布尔值isValid(双倍数字){
    int minValue=1;
    int maxValue=100;
    如果(数字<最小值| |数字>最大值){
    System.out.println(“重试”);
    返回false;
    }
    否则{
    返回true;
    }
    }
    } 
    
    连同关于您的
    val
    函数的注释,您不知道
    数字是什么,似乎以下是您实际希望程序执行的操作:

    import java.util.Scanner;
    
    class Find {
    
      public static void main (String args[]) {
        Scanner input = new Scanner(System.in); 
        double number;
    
        do {
            System.out.print("Enter a number: "); 
            number = input.nextDouble();
        } while(!isValid(number));
      }
    
      private static boolean isValid(double number){
        int minValue = 1;
        int maxValue = 100;
    
        if (number < minValue || number > maxValue ) {
           System.out.println("Try again");
           return false;
        }
        else {
           return true;
        }
      }
    } 
    
    import java.util.Scanner;
    类查找{
    公共静态void main(字符串参数[]){
    扫描仪输入=新扫描仪(System.in);
    双数;
    做{
    System.out.print(“输入一个数字:”);
    number=input.nextDouble();
    }而(!isValid(number));
    }
    私有静态布尔值isValid(双倍数字){
    int minValue=1;
    int maxValue=100;
    如果(数字<最小值| |数字>最大值){
    System.out.println(“重试”);
    返回false;
    }
    否则{
    返回true;
    }
    }
    } 
    
    这是我使用的a类零件。它非常简单,如果输入字符串,它就不会中断。如果你需要,你可以找到更多关于它的信息

        public int readInt(String prompt, int min, int max)
    {
        Scanner scan = new Scanner(System.in);
    
        int number = 0;
    
        //Run once and loop until the input is within the specified range.
        do 
        {
            //Print users message.
            System.out.printf("\n%s > ", prompt);
    
            //Prevent string input crashing the program.
            while (!scan.hasNextInt()) 
            {
                System.out.printf("Input doesn't match specifications. Try again.");
                System.out.printf("\n%s > ", prompt);
                scan.next(); 
            }
    
            //Set the number.
            number = scan.nextInt();
    
            //If the number is outside range print an error message.
            if (number < min || number > max)
                System.out.printf("Input doesn't match specifications. Try again.");
    
        } while (number < min || number > max);
    
        return number;
    }   public int readInt(String prompt, int min, int max)
    {
        Scanner scan = new Scanner(System.in);
    
        int number = 0;
    
        //Run once and loop until the input is within the specified range.
        do 
        {
            //Print users message.
            System.out.printf("\n%s > ", prompt);
    
            //Prevent string input crashing the program.
            while (!scan.hasNextInt()) 
            {
                System.out.printf("Input doesn't match specifications. Try again.");
                System.out.printf("\n%s > ", prompt);
                scan.next(); 
            }
    
            //Set the number.
            number = scan.nextInt();
    
            //If the number is outside range print an error message.
            if (number < min || number > max)
                System.out.printf("Input doesn't match specifications. Try again.");
    
        } while (number < min || number > max);
    
        return number;
    }
    
    public int readInt(字符串提示,int-min,int-max)
    {
    扫描仪扫描=新扫描仪(System.in);
    整数=0;
    //运行一次并循环,直到输入在指定范围内。
    做
    {
    //打印用户混乱