2016-03-15 2 views
0

Как изменить это, пока (истина), в то время как тогда, когда пользователь вводит номер, им будут предоставлены данные, но если они войдут *, система закроется.Java Do While Validation

while (true){ 
     System.out.print("Enter number: "); 
     int option = keyboard.nextInt(); 
     out.writeInt(option); 
+0

Вы не можете получить '*' в качестве входа, если используете 'nextInt()'. – pczeus

+0

Если я изменю его, чтобы пользователь входил в -1, возможно ли это и как? – PeterJenkin

+0

Да, еще проще. См. Ответ ниже. – pczeus

ответ

0
char option; 
do { 
     System.out.print("Enter number: "); 
     option = keyboard.nextChar(); 
     out.writeChar(option); 
} while (option != '*') 
+0

Я считаю, он хотел, чтобы звездочка НЕ ​​была напечатана –

+0

Мне нужно, чтобы она оставалась целым. это возможно? – PeterJenkin

+0

Вы не можете прочитать целое число, а затем сравнить это целое число с символом '*'. но вы должны уметь видеть, может ли он быть преобразован в int и распечатать его, если это может быть int. –

0

Вы можете использовать nextLine() или next() получить вход и анализировать их соответствующим образом:

do{ 
    System.out.print("Enter number: "); 
    String str = keyboard.nextLine(); 
    int option = 0; 
    if(str.matches"[0-9]+"){ 
     option = Integer.parseInt(str); 
     System.out.println(option); 
    } 
    else if(str.equals("*")) 
     System.exit(0); //or use break; if you want to exit the loop 
}while(whatever);   //whatever == true 
0

Если вы измените его, чтобы позволить пользователю ввести строку, а затем преобразовать в int, если возможно, вы можете поймать любые ошибки и выйти, если пользователь вводит символ '*':

import java.util.*; 

    class MainInput{ 

     public static void main(String[] args){ 
      Scanner keyboard = new Scanner(System.in); 
      int option; 
      String input; 

      do{ 
       System.out.print("Enter number: "); 
       input = keyboard.nextLine(); 
       try{ 
        option = Integer.parseInt(input); 
        System.out.println("You entered the value: " + option); 
       } 
       catch(Exception ex) { 
        if (!input.equals("*")){ 
         System.err.println("Invalid input, please enter numbers only."); 
        } 
       } 
      }while(!input.equals("*")); 
     } 
    } 

Если вы используете значение выхода, подобное (-1), вы можете продолжать обрабатывать ввод с nextInt() и становится еще проще. Вы можете сделать это с помощью простого Do/время:

import java.util.*; 

    class MainInput{ 
     public static void main(String[] args){ 
      Scanner keyboard = new Scanner(System.in); 
      int option = 0; 
      do{ 
       System.out.print("Enter number: "); 
       option = keyboard.nextInt(); 
       System.out.println("You entered the value: " + option); 
      }while(option != -1); 
     } 
    } 
0
do{ 
     System.out.print("Enter number: "); 
     Scanner sc = new Scanner(System.in); 
     String str = sc.nextLine(); 

    }while(!str.equals("*")) 

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

int number; 
    do{ 
     System.out.print("Enter number: "); 
     Scanner sc = new Scanner(System.in); 
     String str = sc.nextLine(); 
     number = Integer.parseInt(str); 
    }while(!str.equals("*")) 

теперь у вас есть целое число number.

+0

привет, я хочу ввести целое число, а не строку, как бы это выглядело? – PeterJenkin

+0

Позвольте мне предоставить еще несколько частей кода –