2016-02-28 2 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

LOL! Я новичок в 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; 
Смежные вопросы