2013-10-25 2 views
0
을 읽는 중

스캐너를 사용하여 사용자의 이름을 읽은 다음 문자열의 이름 값을 확인한 다음 getName 메서드를 호출하고 그 이름의 인자를 출력하려면 내 이름은 ..., 내 코드는 충돌하고, 내가 문제를 알아 내기 위해 노력 작동하지 않습니다하지만 난스캐너를 사용하여

public void getName(String name) 
    { 
     String s = "your name is: "+name ; 
    } 
    public void userInput() 
    { 
     print(); 
     Scanner s = new Scanner(System.in); 
     String read = s.nextLine(); 
     String op = read; 
     while(!read.equals("Exit")) 
     { 
      switch (op){ 
       case "a" : 
       System.out.println("type your name:"); 
       read = s.nextLine(); 
       getName(read); 
       print(); 
       read = s.nextLine(); 
       op = read; 
       break; 
       case"b" : 
       System.out.println("by"); 
       print(); 
       read = s.nextLine(); 
       op = read; 
       break; 
      } 

     } 
    } 

    public void print() 
    { 
     System.out.println("press a"); 
     System.out.println("press b"); 
    } 
+0

어디에서 충돌이 발생합니까? 어떤 오류가 있습니까? – cjc343

+0

코드가 '그냥 충돌'하지 않습니다. 어떤 종류의 오류가 있습니까? – nhgrif

+0

userInput() 메서드를 호출 할 때 잘 동작하며 입력 할 때 내 이름을 쓰도록 요청하지만 getName 메서드에 String 이름을 보내면 루프에 입력되어 중단되지 않습니다. –

답변

1

당신의 동안의 조건이 거짓하려면 스위치에 default 문을 추가 :

while (!read.equals("Exit")) { 
     switch (op) { 
     case "a": 
      System.out.println("type your name:"); 
      read = s.nextLine(); 
      getName(read); 
      print(); 
      read = s.nextLine(); 
      op = read; 
      break; 
     case "b": 
      System.out.println("by"); 
      print(); 
      read = s.nextLine(); 
      op = read; 
      break; 
     default: // Add this to finish loop when you type "Exit" 
      read = s.nextLine(); 
     } 

    } 

편집

내 생각 엔이 같은 이름을 인쇄 할 것입니다 getName 메서드 (read) 호출이 유용하지 않은 경우 다음 중 하나를 시도하십시오.

1.getName()은 문자열을 반환하고 나중에 사용하기 위해 userInput()에 저장할 수 있습니다. 그건 그렇고, getSomething() 메서드는 일반적으로 뭔가를 반환하는 데 사용됩니다.

public static String getName(String name) { 
    String s = "Your name is: " + name; 
    return s; 
} 

그리고이에 userInput()에있어서, 상기 void getName(String name) 방법

String name = getName(read); 

2 또는 인쇄 일 :

System.out.println("Your name is: " + name); 

그리고 userInput() 방법에 getName(read)를 호출

getName(read); 
+0

감사합니다. 잘 했어요. –

0

귀하의 코드가 getName에 유용한 아무것도하지 않습니다 수 없습니다.

public void getName(String name) // should rename this method 'printName' 
{ 
    System.out.println("your name is: "+name); 
} 
+0

첫 번째 경우에서 getName 메서드를 호출 할 때 이름을 출력하지 않습니다. 이것이 내가 요청한 것입니다. –

+0

이 경우에는 예제 코드가 도와주세요. – ljgw

관련 문제