java - 在防止输入错误时使用异常

标签 java

嗨,我正在尝试创建一个代码,让用户输入日期。然后,我将操纵该日期来创建每天的旅行成本。我正在努力添加异常以防止输入错误。谁能给我一些关于如何做到这一点的提示?我的代码:

import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Price
{
  public static void main (String [] args)
  {
    userInput();         
  }

  public static void userInput()
  {
    Scanner scan = new Scanner(System.in);

    int month, day, year;

    System.out.println("Please enter a month MM: ");
    month = scan.nextInt();
    System.out.println("Please enter a day DD: ");
    day = scan.nextInt();
    System.out.println("Please enter a year YYYY: ");
    year = scan.nextInt();
    System.out.println("You chose: " + month + " /" + day +  " /" + year);  
  }
}

最佳答案

隐藏方法内的异常处理...

public static int inputInteger(Scanner in, String msg, int min, int max) {
  int tries = 0;
  while (tries < maxTries) {
    System.out.println(msg);
    try {
      int result = in.nextInt();
      if (result < min || result > max) {
        System.err.println("Input out of range:" + result);
        continue;
      }
      return result;
    } catch (Exception ex) {
      System.err.println("Problem getting input: "+ ex.getMessage());
    }
  }
  throw new Error("Max Retries reached, giving up");
}

这有点简单,但对于简单的应用程序来说这是一个很好的开始。相同类型的循环可以让您验证输入(例如,不要将 35 作为日期)

关于java - 在防止输入错误时使用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15559356/

相关文章:

java - 使用 JAXB 动态读取 XML

java - 使用 BeanPostProcessor 获取 NullPointerException

java - 有没有办法知道字段是否扩展 java.awt.Component?

java - 如何创建一个随机的单词选择器方法

java - 进行 DOM 节点到字符串的转换,但存在命名空间问题

java - 将对象从 View 传递到 Controller 或从 Controller 传递到 Controller

java - Camel SFTP - 无法将目录更改为 '/'

java - 迭代列表对象内的对象

java - 未从 fragment 调用 onActivityResult

java - 如何简化多个字段上空安全比较器的创建?