2013-11-01 2 views
0
package test; 

import java.util.Scanner; 

public class Char { 
    public static void main(String[] args) { 
    char c = 0; 
    Scanner scan = new Scanner(System.in); 
    printeaza(c, scan); 
} 

public static char printeaza(char c, Scanner sc) { 
    c = sc.next().charAt(0); 
    if (sc.hasNext()) { 
     System.out.println(printeaza(c, sc)); 
     return c; 
    } else { 
     return c; 
    } 
} 
} 

내가 뭘 하려는지 키보드에서 문자를 입력하고 그들을 역방향으로 표시해야합니다. 나는 for 루프와 char 배열로 매우 쉽게 만들 수 있지만 재귀 적으로 만들고 오직 하나의 char 변수를 사용하는 것에 대해 궁금합니다. 나는 거의 만들었지 만 첫 글자를 제외한 모든 것을 인쇄하는 것 같습니다.자바 재귀 System.out.println()

그래서 "f d s a"대신 "a s d f"를 입력하면 "f d s"만 나타납니다. 내가 왜 그 이유는, Println 문은 if 문 안에 있기 때문이며, 함수를 "캐치"하는 첫 번째 문자를 만드는 방법에 대한 ideeas를 실행한다고 생각합니다. 나는 당신이 모양을 가질 수 있기를 바랍니다, 감사합니다!

+3

'printeaza'에는 char 매개 변수가 필요하지 않습니다. 이 메소드에서 가장 먼저하는 일은 그것을 덮어 쓰는 것입니다. – Cruncher

+0

Java 디버거를 사용하십시오. 다른 사람들에게 코드를 디버깅하도록 요청할 필요는 없습니다. 만약 당신이 어떻게 해야할지 모르겠다면, 다음을 배우십시오. –

+0

저는 사람들이 제게 코드를 디버깅하라고 요구하지 않았습니다. 제가 막혔으므로 단지 ideea를 요구했을뿐입니다. 나는 "재귀와 사고"에 익숙하지 않다. 아무 말도 안 해줘서 고마워. 답장을 보내기위한 점수를 얻었습니까? – erasmus77

답변

2

문제는 printeaza를 호출 자체를 인쇄하지 않는다는 것입니다 문자 만이 재귀 호출입니다. main 요구에 즉

, printeaza(c, scan); 난 그냥이 같은 사용자 입력을 재귀 호출을 사용하여 정직하게하는 아주 좋은 생각이 아니라는 것을 지적하고 싶습니다 System.out.println(printeaza(c, scan); 또한

로 변경합니다. :/

+0

감사합니다. 정답입니다! – erasmus77

3

printeaza(c, scan) (public static void main으로 작성)에 대한 첫 번째 전화는 System.out.println(..)으로 포장해야합니다. 이처럼

: 된 Cruncher의 조언을 통합

package test; 

import java.util.Scanner; 

public class Char { 
    public static void main(String[] args) { 
     char c = 0; 
     Scanner scan = new Scanner(System.in); 
     System.out.println(printeaza(c, sc)); // <-- changed line 
    } 

    public static char printeaza(char c, Scanner sc) { 
     c = sc.next().charAt(0); 
     if (sc.hasNext()) { 
      System.out.println(printeaza(c, sc)); 
      return c; 
     } else { 
      return c; 
     } 
    } 
} 

, 나는 이런 식으로 쓰기 것 :

package test; 

import java.util.Scanner; 

public class Char { 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     System.out.println(printeaza(sc)); 
    } 

    public static char printeaza(Scanner sc) { 
     char c = sc.next().charAt(0); 
     if (sc.hasNext()) { 
      System.out.println(printeaza(sc)); 
     } 
     return c; 
    } 
} 
+0

당신은 그것을 찍었습니다! 자세한 답변을 주셔서 감사합니다. – erasmus77