2017-12-14 107 views
-2

현재 학교 과제물을 작성 중이며 거의 완료되었지만 추가하기 전에 해결해야 할 큰 문제가 있습니다. 마지막 비트.잘못된 입력 후에 자바 프로그램을 처음부터 다시 시작해야합니다.

1 또는 2를 입력하라는 메시지를 작성해야합니다. 그런 다음 세 단어/이름을 입력하고 배열에 저장하라는 메시지가 표시됩니다.

그런 다음 1 개 또는 2 개를 선택했는지에 따라 알파벳순으로 인쇄하거나 소문자와 대문자를 뒤집습니다. 첫 번째 입력과 관련된 문제를 해결하려고하기 때문에 아직 그 부분을 추가하지 않았습니다.

1 또는 2 이외의 숫자를 입력하면 오류 메시지가 표시되고 다시 입력하라는 메시지가 표시됩니다. 나는 전체 프로그램을 다시 복사/붙여 넣기를 다시하기 때문에 전체 프로그램을 처음부터 다시 시작하는 것이 좋을 것이라고 확신한다. lol

큰 문제는 아마 if/else를 사용하고있는 것이다. 루프 내에서 전체를 넣어야 할 때 for 루프를 사용하는 문장? 그러나 전체 코드를 넣으면 루프를 시작하기 위해 어떤 조건을 사용할 지 모르겠습니다. 여기에 뭔가 빠져 있어야합니다. 지금, 그것은 당신이 따라서 당신이 명령을 사용하여 다시 시작할 수 있습니다, 응용 프로그램을 종료하는 1 또는 2

import java.util.Scanner; 

public class IsabellaPiantoniLab5 { 
    public static void main (String[]args) { 

     //Ask for input 
     Scanner input = new Scanner(System.in); 
     System.out.print("Please choose either a number 1 or number 2."); 
     int numChoice = input.nextInt(); 

     //if choice is 1 or 2 
     if (numChoice == 1 || numChoice == 2) { 

      System.out.println("Please enter three names: "); 
      String nameInput[] = new String[4]; 

      //input loop 
      for (int i= 0; i < nameInput.length; i++) { 

      nameInput[i] = input.nextLine(); 
     } 

     System.out.println("Values are:"); 

     //display values if 1 
     if (numChoice == 1) { 
      for (int i=1; i<4; i++) { 
       System.out.println(nameInput[i]); 
      } 
     } 
     //display values if 2 
     else if (numChoice == 2) { 
      for (int i=1; i<4; i++) { 
       System.out.println(nameInput[i]); 
      } 
     } 
} 

//retry if invalid------i restart from the beginning if this happens 
else if (numChoice != 1 || numChoice != 2) { 

    System.out.println("Invalid value. Please try again."); 
    //continue; 
} 
} 
} 
+0

모든 코드를'main()'에 넣는 대신, 기능 비트를 자신의 메소드로 분해 해보십시오. 그렇게하면 코드를 (다시) 호출하는 것이 훨씬 쉬울 것입니다. – azurefrog

+1

'while (userInput! = 1 || 2) {userInput = askForUserInput()}'과 같은 것이 필요합니다. – csmckelvey

+0

당신은 "if (numChoice! = 1 || numChoice! = 2)"라고 썼지 만 그것은 항상 사실입니다. numChoice가 하나가 아니거나 두 개가 아닙니다. – jorgbrown

답변

1
System.exit(0); 

에 넣어 경우에도 유효하지 않은 입력을 말하는 걸리면 자녀로

라인 (START [your app path])

또는

RunTime.getRuntime().exec(“Your app”); 
System.exit(0); 

편집 질문을 오해 한 것 같아서 전체 앱을 다시 시작하고 싶다고 생각했습니다 @csm_dev 으로 접근 방법을 논의한 후 필드를 비우고 메시지를 표시하여 사용자 입력을 한 번 더 요청하는 방법입니다. "유효한 입력 "에

+4

사용자가 오타를 입력했기 때문에 전체 응용 프로그램을 종료하고 수동으로 다시 시작하는 것은 상황을 처리하는 끔찍한 방법입니다. – csmckelvey

+0

따라서 두 번째 접근법을 사용할 수 있습니다 –

+1

두 번째 접근법은 응용 프로그램을 종료하지 않습니까? 다시 시작하지 않아도됩니까? 'System.exit()'를 호출하면 프로그램을 닫을 수 있습니다.이 프로그램은 다시 한번 끔찍한 해결책입니다. 또한 코드에서 '스마트 인용 부호'를 사용하지 마십시오. – csmckelvey