2015-01-30 3 views
0

Я искал в Интернете и не могу найти ответ Так кто-нибудь знает, как остановить пользователей от ввода букв, где должны быть разрешены только номера?Как ограничить ввод от пользователя цифровым значением?

Это то, что мой код выглядит до сих пор.

public static double payCalculator(double hours, double basePay) 
{ 
    double totalPay; 
    double overTime = 8.00 * 1.5; 
    while(hours < 0 | hours > 60) { 
     System.out.println("Cannot work more than 60 hours a week"); 
     System.out.println("Hours Work?"); 
     hours = in.nextDouble(); 
    } 
    while(basePay < 8) { 
     System.out.println("Base Pay cannot be less than 8"); 
     System.out.println("Base Pay?"); 
     basePay = in.nextDouble(); 
    } 
    if 
     (hours <= 40){ 
     totalPay = hours*basePay; 
    } 
    else { 
     totalPay = ((hours - 40)*overTime) + (40*basePay); 
    } 
    return totalPay; 

} 
public static void main (String[] args) { 

    System.out.println("Hours worked?"); 
    hours = in.nextDouble(); 
    System.out.println("Base Pay?"); 
    basePay = in.nextDouble(); 
    DecimalFormat df = new DecimalFormat("###.##"); 
    totalPay = payCalculator(hours, basePay); 
    System.out.println("Total Pay is " + df.format(totalPay));  
} 
} 

Благодарим за ваше время.

+0

Вам не нужно опубликовать цельные кода, чтобы найти решение вашей проблемы, пожалуйста, поделитесь только той частью вашего кода, которая связана с вашей проблемой. –

+0

Что такое 'in' ?? – PeterMmm

+0

Кажется, это консольное приложение. Возможно ли использовать графический интерфейс с текстовым полем ввода Swing. – PeterMmm

ответ

3

Я предполагаю, что вы используете Scanner для ввода ввода.

Вы можете использовать Scanner.hasNextDouble(), чтобы проверить его число, оно возвращает значение true, если следующий токен в этом входе сканера можно интерпретировать как значение double с использованием метода nextDouble(). Сканер не продвигается мимо какого-либо входа.

Рассмотрим этот пример, он будет продолжать просить для входа, если пользователь не обеспечивает его с номером,

Scanner sc = new Scanner(System.in); 
    double dbl = 0.0; 
    boolean isValid = false; 
    while (isValid == false) { 
     System.out.println("Input Number: "); 
     // If input is number execute this, 
     if (sc.hasNextDouble()) { 
      dbl = sc.nextDouble(); 
      isValid = true; 
      System.out.println("OK"); 
     } 
     // If input is not a number execute this block, 
     else { 
      System.out.println("Error! Invalid number. Try again."); 
     } 
     sc.nextLine(); // discard any other data 
    } 
    sc.close(); 

выход,

Input Number: 
adsads 
Error! Invalid number. Try again. 
Input Number: 
sdas 
Error! Invalid number. Try again. 
Input Number: 
hello 
Error! Invalid number. Try again. 
Input Number: 
hi 
Error! Invalid number. Try again. 
Input Number: 
2.0 
OK 
Смежные вопросы