如何针对两个数组验证java中的用户输入?

时间:2018-01-08 20:14:33

标签: java

我的任务是编写一个小程序,用于计算每天根据预定义算法(月*日*常数)更改的管理员访问代码。

我掌握了为我的main方法编写的代码,其基本功能来自java.time.LocalDate& format.DateTimeFormatter然后将字符串解析为整数,然后计算并显示结果。

String month = DateTimeFormatter.ofPattern("MM").format(localDate);
String date = DateTimeFormatter.ofPattern("dd").format(localDate);
int monthResult = Integer.parseInt(month);
int dateResult = Integer.parseInt(date);
int adminAccess = monthResult * dateResult * seed;
System.out.println("Admin Passcode is: " + adminAccess);

但现在我想把它提升到一个新的水平,并加入一个选项,通过用户输入手动计算访问代码。

我想验证用户输入并在获取输入之前允许数字或字符串输入,并根据输入分配正确的整数表示。我希望最终能够沿着这些方向做点什么 (预期的计划流程)1。我不确定我是否只是远远超过我的头脑,但我无法完全理解我应该使用For,Do While或Switch来处理验证的功能。我现在所拥有的只有:

class userManual {
            public void run() {
                String [] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
                String [] numMonths = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"};
                Scanner scan = new Scanner(System.in);
                String manual = scan.next();
                for () {}
            }
        }

任何想法都将不胜感激!!

1 个答案:

答案 0 :(得分:0)

尝试以下方法。我没有对它进行优化,但是将它快速而肮脏地放在一起,以帮助你实现这个想法。确保理解概念而不仅仅是复制粘贴代码。希望这有帮助!

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

class UserManual {

  public static void main(String[] args) {
    Map<String, Integer> months = new HashMap<String, Integer>();
    months.put("January", 1);
    months.put("February", 2);
    months.put("March", 3);
    months.put("April", 4);
    months.put("May", 5);
    months.put("June", 6);
    months.put("July", 7);
    months.put("August", 8);
    months.put("September", 9);
    months.put("October", 10);
    months.put("November", 11);
    months.put("December", 12);
    Scanner scan = new Scanner(System.in);
    String manual = scan.next();
    String strMonth = "";
    if (months.containsKey(manual)) {
      strMonth = manual;
    } else if (months.containsValue(Integer.valueOf(manual))) {
      for (Entry<String, Integer> entry : months.entrySet()) {
        if (entry.getValue().equals(Integer.valueOf(manual))) {
          strMonth = entry.getKey();
        }
      }
    }
    if (!strMonth.equals("")) {
      System.out.println("Valid Month --> " + strMonth);
    } else {
      System.out.println("Input is invalid!");
    }
    scan.close();
  }
}