2016-02-28 112 views
0

我想验证用户输入。我不希望用户输入负数,字符串和双数。我只需要int。我只能验证字符串和双打。您的帮助将不胜感激。验证负输入

do { 

    System.out.println("How many cappuccino drinks were sold today?"); 
    if(input.hasNextInt()) { 

     cappuccinoDrink = input.nextInt(); 


      capexpenses = cappuccinoDrink * 1.56; 
      capRevenue = cappuccinoDrink * 3.50; 
      capProfit = capRevenue - capexpenses; 
      isNumber = true; 

    }else { 
     System.out.println("You didn't didn't enter the require imput"); 
     isNumber = false; 
     input.next(); 
    } 
} while(!isNumber); 
+0

尝试'String.matches( “\\ d +”)'是用于一个或多个数字的正则表达式。 –

+0

这就像,我只能计算1 + 2,但是1 + 1是多少?我想说的是你已经做到了,你应该可以自己完成! – Theo

+0

大声笑!我是新来的Java。有时我会感到困惑。 :) – Intelligent

回答

1

更改if(input.hasNextInt()) {为以下:

if(input.hasNextInt() && (cappuccinoDrink = input.nextInt()) >= 0) { 
      //removed assignment as it is handled in if statement 
      capRevenue = cappuccinoDrink * 3.50; 
      capProfit = capRevenue - capexpenses; 
      isNumber = true; 
} 
0
int cappuccinoDrink; 
boolean invalidinput = true; 
System.out.println("Please enter a positive integer : "); 
while(invalidInput){ 
    try{ 
    cappuccinoDrink = input.nextInt(); 
    if(cappuccinoDrink<= 0) { 
      System.out.println("Please enter a positive integer value: "); 
    } 
    else{invalidInput=false;} 
    } 
    catch(InputMismatchException e){ 
     System.out.println("Please enter a positive integer value: "); 
    } 
} 
     capexpenses = cappuccinoDrink * 1.56; 
     capRevenue = cappuccinoDrink * 3.50; 
     capProfit = capRevenue - capexpenses;