Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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 用户输入错误,没有引发异常或使用try{}catch{}_Java_Input_User Input - Fatal编程技术网

Java 用户输入错误,没有引发异常或使用try{}catch{}

Java 用户输入错误,没有引发异常或使用try{}catch{},java,input,user-input,Java,Input,User Input,我试图创建一个使用while循环的方法,该循环包含一个前瞻方法来处理错误的用户输入:输入超出1-10范围或输入字符串。我试图在不抛出异常或使用try{}catch{}的情况下实现这一点;如果可能的话。我还没有找到一个帖子不使用这些,到目前为止,我所有的尝试都失败了。一个基本的想法会奏效 如果输入正确,则不会停止 import java.util.*; public class UserErrors{ public static Scanner console = new Scanner(S

我试图创建一个使用while循环的方法,该循环包含一个前瞻方法来处理错误的用户输入:输入超出1-10范围或输入字符串。我试图在不抛出异常或使用try{}catch{}的情况下实现这一点;如果可能的话。我还没有找到一个帖子不使用这些,到目前为止,我所有的尝试都失败了。一个基本的想法会奏效

如果输入正确,则不会停止

import java.util.*;
public class UserErrors{

  public static Scanner console = new Scanner(System.in);
  public static void main(String[]args){
    String s  = "Enter a integer between 1-10: ";
  get(s);
  }
  public static int get(String prompt){

    System.out.print(prompt);
    while(console.hasNext()){
      while(!console.hasNextInt()){
        console.next();
        System.out.println("Invalid data type");
        System.out.print(prompt);
      }
      if(console.nextInt() > 10 || console.nextInt() <1){
        System.out.println("not in range");
        System.out.print(prompt);
      }
    }
    return console.nextInt();
  }
}
import java.util.*;
公共类用户错误{
公共静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
String s=“输入一个介于1-10之间的整数:”;
取得(s);;
}
公共静态int-get(字符串提示){
系统输出打印(提示);
while(console.hasNext()){
而(!console.hasnetint()){
console.next();
System.out.println(“无效数据类型”);
系统输出打印(提示);
}
if(console.nextInt()>10 | | console.nextInt()1){
b=正确;
}
否则{
System.out.println(“不在范围内”);
系统输出打印(提示);
console.nextInt();
}
}
返回控制台.nextInt();
}
}
我还删除了其他一些失败的尝试。我需要修复什么(基本想法就可以了)?

有一个错误:

if(console.nextInt() > 10 || console.nextInt() <1){ ... }
if(console.nextInt()>10 | | console.nextInt()10 | | i出现错误:

if(console.nextInt() > 10 || console.nextInt() <1){ ... }

if(console.nextInt()>10 | | console.nextInt()10 | | i每个nextInt调用都是一个阻塞调用,它等待用户输入。
当您在下面一行中编写代码时:

    if(console.nextInt() < 10 && console.nextInt() >1)
然后使用userInput变量进行以下检查:

    if(userInput < 10 && userInput >1)
if(userInput<10&&userInput>1)

每个nextInt调用都是阻塞调用,它等待用户输入。 当您在下面一行中编写代码时:

    if(console.nextInt() < 10 && console.nextInt() >1)
然后使用userInput变量进行以下检查:

    if(userInput < 10 && userInput >1)
if(userInput<10&&userInput>1)
Scanner类的方法nextInt()读取标准出口

import java.util.*;

public class UserErrors{
  public static Scanner console = new Scanner(System.in);
  public static void main(String[]args){
    String s  = "Enter a integer between 1-10: ";
     get(s);
  }

  public static int get(String prompt){    
    boolean b = false;
    int number;
    while(!b){
      System.out.print(prompt);
      if(!console.hasNextInt()){
        console.next();
        System.out.println("Invalid data type");
        System.out.print(prompt);
        console.nextInt();
      }else {
        number = console.nextInt();
        if(nb<1 || nb>10){
            System.out.println("not in range");
        }else{
           b=true;
        }
      }
    }
    return nb;
  }
}
import java.util.*;
公共类用户错误{
公共静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
String s=“输入一个介于1-10之间的整数:”;
取得(s);;
}
公共静态int get(字符串提示符){
布尔b=假;
整数;
而(!b){
系统输出打印(提示);
如果(!console.hasNextInt()){
console.next();
System.out.println(“无效数据类型”);
系统输出打印(提示);
console.nextInt();
}否则{
number=console.nextInt();
如果(nb10){
System.out.println(“不在范围内”);
}否则{
b=正确;
}
}
}
返回nb;
}
}
Scanner类的方法nextInt()读取标准出口

import java.util.*;

public class UserErrors{
  public static Scanner console = new Scanner(System.in);
  public static void main(String[]args){
    String s  = "Enter a integer between 1-10: ";
     get(s);
  }

  public static int get(String prompt){    
    boolean b = false;
    int number;
    while(!b){
      System.out.print(prompt);
      if(!console.hasNextInt()){
        console.next();
        System.out.println("Invalid data type");
        System.out.print(prompt);
        console.nextInt();
      }else {
        number = console.nextInt();
        if(nb<1 || nb>10){
            System.out.println("not in range");
        }else{
           b=true;
        }
      }
    }
    return nb;
  }
}
import java.util.*;
公共类用户错误{
公共静态扫描仪控制台=新扫描仪(System.in);
公共静态void main(字符串[]args){
String s=“输入一个介于1-10之间的整数:”;
取得(s);;
}
公共静态int get(字符串提示符){
布尔b=假;
整数;
而(!b){
系统输出打印(提示);
如果(!console.hasNextInt()){
console.next();
System.out.println(“无效数据类型”);
系统输出打印(提示);
console.nextInt();
}否则{
number=console.nextInt();
如果(nb10){
System.out.println(“不在范围内”);
}否则{
b=正确;
}
}
}
返回nb;
}
}
那里没有错误:if(console.nextInt()>10 | | console.nextInt()那里没有错误:if(console.nextInt()>10 | | console.nextInt())