2013-04-08 2 views
0

누군가가 예를 입력 할 때 원하는만큼 반복해서 이름을 입력 할 수 있도록 루프에 코드를 사용해야합니다. 그러나이 방법은 잘 모릅니다.자바 루핑 (초급)

public static void main(String [] args) 
    { 
    // Create a Scanner object to read input. 
    Scanner keyboard = new Scanner(System.in); 

    //Get the user's name. 
    System.out.print("What is your name?"); 
    String name = keyboard.nextLine(); 
    System.out.println("Hello there," + name); 

    System.out.println("Would you like to enter another name? Please enter Yes Or No."); 
    String reply = keyboard.nextLine(); 

    if (reply == "yes") 
    { 

    } 
    } 
} 

답변

-1

당신은 당신이 응답 변수를 필요로하므로 응답이 '예'동안 루프를 계속 실행하려면 : 어떤 도움 감사합니다, 여기에 내 코드입니다. 또한

public static void main(String [] args) 
    { 
    String reply = "yes"; 
    while(reply.equals("yes")) { 
     // Create a Scanner object to read input. 
     Scanner keyboard = new Scanner(System.in); 

     //Get the user's name. 
     System.out.print("What is your name?"); 
     String name = keyboard.nextLine(); 
     System.out.println("Hello there," + name); 

     System.out.println("Would you like to enter another name? Please enter Yes Or No."); 
     reply = keyboard.nextLine(); 
    } 
    } 
} 

는 사실이 없을 것 때문에 reply == "yes"을 사용할 수 있습니다. 이것은 문자열이 메모리에서 의미하는 것과 관련이 있습니다. 대신 reply.equals("yes")을 사용하십시오.

7

reply == "yes"은 Java에서 String을 어떻게 비교하지 않습니다. 이것은 메모리 위치가 아닌 내용을 비교합니다 (메모리 위치가 동일하지는 않습니다.).

대신 당신은 reply.equals("yes")을 사용할 필요하거나 사례 비교를하는 것에 대해 걱정하지 않는 경우에, 당신은 당신은 또한 읽기를 원하는 수 reply.equalsIgnoreCase("yes") 대신

do { 
    // The remainder of your code... 
} while (reply.equalsIgnoreCase("yes")); 

업데이트 사용할 수 있습니다 The while and do-while statementsThe for Statement을 통해, 자바 루핑의 기초를 다룹니다.

+0

이것은 OP가 요구하는 것이 아닙니다. 그들은 문자열 비교 방법을 요구하지 않고 사용자가 멈추라 고 요청할 때까지 루프를 반복하는 방법을 요구합니다. – Zyerah

+3

@Telthien 그리고 'String'비교를 수정하지 않으면 아무 것도 작동하지 않습니다. – MadProgrammer

+0

사이드 오류를 수정하더라도 여전히 질문에 대답하지 않습니다. – Zyerah

0

나는 이것이 작동하지 않을 것이라고 생각합니다. :

public static Scanner keyboard = new Scanner(System.in); // global 

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

    public static void getName() 
    { 
     System.out.print("What is your name?"); 
     String name = keyboard.nextLine(); 
     System.out.println("Hello there," + name); 
     rerun(); 
    } 

    public static void rerun() 
    { 
     System.out.println("Would you like to enter another name? Please enter \"yes\" or \"no\"."); 
     String reply = keyboard.nextLine(); 

     if (reply.equals("yes")) getName(); 
     else System.exit(); 
    } 

} 

먼저 getName() 메서드를 호출하고이를 한 번 실행합니다. 그런 다음 rerun() 메소드를 호출합니다. 이 메서드는 프로그램을 다시 실행할지 테스트합니다. 사용자가 "예"를 입력하면 전체 프로세스가 반복됩니다. "예"이외의 값을 입력하면 프로그램이 종료됩니다.

코드가 완료되지 않은 사실 외에도 코드에서 유일한 실제 문제는 문자열을 == 연산자와 비교하려고하는 것입니다. 이것이 잘못된 이유에 대한 MadProgrammer의 대답을보십시오.

+0

답변의 타당성에 감사 드리며, 아마도 OP가 무엇을했는지, OP가 무엇을 잘못했는지, 그리고 대답의 전반적인 이점이 무엇인지에 대해 설명해주십시오. IMHO – MadProgrammer

+0

@MadProgrammer 그게 좋은가요? – syb0rg

+1

개인적으로, 나는'reply == "yes"'가 왜 나쁜지 토론 할 것입니다. 메서드 호출을 사용하면 책임이 분리되고 혼란은 줄어들지 만 올바른 방향으로 이동 함) – MadProgrammer

0

사용이이

import java.util.*; 
public class prob13 { 
public static void main(String [] args) 
    { 
    // Create a Scanner object to read input. 
    Scanner keyboard = new Scanner(System.in); 

    //Get the user's name. 
    while(true){ 
     System.out.print("What is your name?"); 
     String name = keyboard.nextLine(); 
     System.out.println("Hello there," + name); 

     System.out.println("Would you like to enter another name? Please enter Yes Or No."); 
     String reply = keyboard.nextLine(); 

     if(reply.equals("no")) 
      break; 
    } 
} 
} 

이유는 한 응답이 아니오 아니므로를 통해 루프입니다.

하거나, 답변은 항상 네

import java.util.*; 
public class prob13 { 
public static void main(String [] args) 
    { 
    // Create a Scanner object to read input. 
    Scanner keyboard = new Scanner(System.in); 
     String reply="yes"; 
    //Get the user's name. 
    while(reply.equals("yes")){ 
     System.out.print("What is your name?"); 
     String name = keyboard.nextLine(); 
     System.out.println("Hello there," + name); 

     System.out.println("Would you like to enter another name? Please enter Yes Or No."); 
     reply = keyboard.nextLine(); 

    } 
} 
} 
2

do-while 루프를 사용 되길 원한다면 당신은이를 사용할 수 있습니다

public static void main(String[] args) { 

     // Create a Scanner object to read input. 
     Scanner keyboard = new Scanner(System.in); 
     do { 
      //Get the user's name. 
      System.out.print("What is your name?"); 
      String name = keyboard.nextLine(); 
      System.out.println("Hello there," + name); 
      System.out.println("Would you like to enter another name? Please enter Yes Or No."); 

     } while (keyboard.nextLine().equalsIgnoreCase("yes")); 

     System.out.println("Bye!"); 
     keyboard.close(); 
     } 
    } 
0

간단한 (그리고 아마도 명확한) 방법입니다 당신이 무엇을 포장 do-while statement에 반복합니다 :

public static void main(String [] args) 
    { 
    // Create a Scanner object to read input. 
    Scanner keyboard = new Scanner(System.in); 

    String reply; 
    do { 
     //Get the user's name. 
     System.out.print("What is your name?"); 
     String name = keyboard.nextLine(); 
     System.out.println("Hello there," + name); 

     System.out.println("Would you like to enter another name? Please enter Yes Or No."); 
     reply = keyboard.nextLine(); 

    } while ("yes".equals(reply)); 
    } 
} 

는 R을 eply 변수는 루프 조건에서 액세스되기 때문에 블록 앞에 선언되어야합니다 (변수는 선언 된 블록에서만 볼 수 있으므로 응답이 루프에서 선언 된 경우 루프 조건에서는 사용할 수 없습니다) .

== 연산자가 문자열을 참조로 비교하기 때문에 루프 조건이 변경되었습니다. 즉, 양쪽 모두가 동일한 String 객체를 가리키는 지 확인합니다. 반대로 equals 메서드는 문자열의 내용이 같은지 확인합니다 (즉 동일한 순서로 동일한 문자가 포함되어 있음).