如何从用户获取int输入的数量,同时存储用户的输入?

时间:2014-09-26 15:19:29

标签: java

这个程序是一个魔术日期程序(日期月份=“年份作为两位数字”),如06 \ 10 \ 60 ......我想作出一个条件......如果是日期或月份或者输入的年份多于或少于2位应该显示错误信息...我试过这个

 System.out.println("Please enter the day as a two digit Number");
 day=key.nextInt();
 day1=day.length();

但它没有用......所以我尝试了这个:

System.out.println("Please enter the month as a two digit Number");
month1=key.next().length();
month=key.nextInt();

但是当我运行程序时...它需要两个输入而不是一个 所以帮帮我

8 个答案:

答案 0 :(得分:1)

简单地:

day = key.nextInt();
int dayAbs = Math.abs(day);      // to handle negatives
if(dayAbs >= 10 && dayAbs <= 99) {
    // ...
}

答案 1 :(得分:1)

问题是您使用的是nextInt(),但您想要的是06这样的两位数字,这不是一个有效的整数。

最好是:

  1. 将输入扫描为字符串。 String day = scan.nextLine();

  2. 使用day.matches("\\d{2}")确认输入正确 (这只会匹配[0-9]的任何配对,不必担心其他角色)

  3. 如果验证然后您可以获得整数:Integer realDay = Integer.valueOf(day);

  4. 进行进一步验证以测试范围(天数为1-31)(月份为1-12)(2月份为1-28或1-29,取决于年份)等。

答案 2 :(得分:1)

您可以通过将int转换为字符串然后检查字符串的长度来完成此操作。

String s = Integer.toString(day);
if(s.length() <= 2 && !(s.length() < 1)){
    System.out.println("Good");
}else
    System.out.println("Bad"); 

答案 3 :(得分:0)

测试int原语中的位数,试试这个

int number = ...;
// or however you get the number

int length = (int)(Math.log10(number)+1);

if(length!=2) {
    // no!
} else {
    // yuss!
}

答案 4 :(得分:0)

除了使用int use string之外,请检查输入的长度。这段代码只是一个基础。它存储在结果中。然后检查后使用Integer.parseInt(result);

System.out.println("Please enter two digits:");
    Scanner scan = new Scanner(System.in);
    String result = scan.next();
     if(result.length()>2 || result.length()<2)
         System.out.println("ERROR");
     else
         System.out.println("Success");

答案 5 :(得分:0)

实际上,您似乎希望强制执行字符串的长度,以便用户必须键入06而不是6

如果是这样的话:

String dayString = key.next();
if(dayString.length() != 2) {
    // throw error
}
int day = Integer.parseInt(dayString);

答案 6 :(得分:0)

int day=key.nextInt();
String dayString = "";
if(day> 30 || day <0){ System.out.println("Error1");}
else if(day<10 ){ dayString = "0" + String.valueOf(day);}
else{dayString = String.valueOf(day);}

这里你有2位数字作为字符串,更容易操作。 你也可以尝试Date类(java.util.Date)

答案 7 :(得分:0)

我不明白为什么你使用密钥但我认为Buffer reader可以解决你的问题就是这个例子!

int month=0,length=0;
        String len=null;
        BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Please enter the month as a two digit Number");
        len=bf.readLine();
        length=len.length();
        month=Integer.parseInt(len);
        if(length==2)
        {
            System.out.println("Here you go month is two digit!");
        }
        else
        {
           //inform user that month is not 2 digits!
        }