2016-08-30 4 views
1

Итак, эта программа работает, она работает, но я хочу, чтобы она была идиоткой! И для этого мне нужна помощь .. Я не хочу, чтобы она переходила к следующей строке, если пользователь вошел в число или вообще ничего!Перезапустить цикл while, если параметры не выполнены

Если я нажимаю кнопку ввода, ничего не пишу, она все равно переходит к следующей строке, а переменная navn выходит в конце полностью пустой. Он делает то же самое, если я пишу номер. Как заставить его вернуться назад и повторить попытку в цикле еще раз, если ответ не отвечает запросам. Большое спасибо :)

import java.util.Scanner; 

class Metoder { 

    public static void main(String[] args) { 
     String bosted; //Variable 
     String navn; //Variable 

     Scanner in = new Scanner(System.in); 

     System.out.println("Skriv inn navn: "); //What shows up when you first start the program 

     while (!in.hasNext("[A-Za-z]+")) { //Only allow letters A-Z 
      in.next(); 
      System.out.println("Tall horer ikke hjemme i navn, prøv igjen!"); //Prints, "numbers dont belong in names, try again" if what the user entered is a number 

     } 
     System.out.println("Takk!"); //Says thank you if the user has entered letters 

     navn = in.nextLine(); //Proceeds to next line 

     System.out.println("Skriv inn bosted: "); //Next line, where the user is supposed to enter where he/she lives 
     while (!in.hasNext("[A-Za-z]+")) { //Excactly the same loop as above 
      in.next(); 
      System.out.println("Tall hører ikke hjemme i stedsnavn, prøv igjen!"); 
     } 
     System.out.println("Takk!"); 

     bosted = in.nextLine(); 

     System.out.println("Hei, " + navn + "! Du er fra " + bosted + "."); //Prints out what the user has entered previously in a full sentence. 

    } 
} 
+1

Когда вы используете несколько раз тот же кусок кода, рассмотреть вопрос о создании его в специальном методе. – Berger

+0

Да, спасибо! –

+0

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

ответ

1

Пожалуйста, используйте этот код:

public static void main(String[] args) { 
    String bosted=""; //Variable 
    String navn=""; //Variable 

    Scanner in = new Scanner(System.in); 

    System.out.println("Skriv inn navn: "); //What shows up when you first start the program 

    while(in.hasNext()) { //Only allow letters A-Z 
     navn = in.nextLine(); 
     if(!navn.isEmpty() && navn.matches("[A-Za-z]+")){ 
      System.out.println("Takk!"); //Says thank you if the user has entered letters 
      in.next(); 
      break; 
     } 
     else{ 
      System.out.println("Tall horer ikke hjemme i navn, prøv igjen!"); //Prints, "numbers dont belong in names, try again" if what the user entered is a number 
      in.next(); 
      System.out.println("Skriv inn navn: "); 
      continue; 
     } 

    } 

    System.out.println("Skriv inn bosted: "); 
    while(in.hasNext()) { //Only allow letters A-Z 
     bosted = in.nextLine(); 
     if(!bosted.isEmpty() && bosted.matches("[A-Za-z]+")){ 
     System.out.println("Takk!"); //Says thank you if the user has entered letters 
     break; 
     } 
     else{ 
      System.out.println("Tall horer ikke hjemme i navn, prøv igjen!"); //Prints, "numbers dont belong in names, try again" if what the user entered is a number 
      in.next(); 
      System.out.println("Skriv inn bosted: "); 
      continue; 
     } 


} 
    System.out.println("Hei, " + navn + "! Du er fra " + bosted + "."); //Prints out what the user has entered previously in a full sentence. 
} 
0

Вы можете использовать continue ключевое слово, чтобы перезапустить цикл по существу.

while(!in.hasNext("[A-Za-z]+")) { 
    try { 
     String s = in.nextLine(); 
     if(s.isEmpty() || s.matches("^-?\\d+$")){ 
      throw new Exception("empty string or number detected"); 
     } 
    } catch (Exception e){ 
     continue; 
    } 
} 

В этом if состояния мы проверяем, если введенная строка пуста или является целым числом, и мы можем бросить исключение, которое вызовет цикл в то время продолжать задайте, пока условие не выходит из строя (т.е. проходит OUR контрольная работа).

Смежные вопросы