2014-12-06 3 views
-1

사용자가 숫자를 입력하는 클래스에 대한 문제를 해결하고 있으며 1000 이상인 경우 쉼표를 추가해야합니다. 따라서 사용자가 12300을 입력하면 출력은 12,300이됩니다. 1 백만 미만의 숫자를 처리하는 방법을 알아 냈지만 1234567과 같은 숫자를 입력하면 전혀 인쇄되지 않습니다. 메소드의 코드는 다음과 같습니다.Java 재귀 예제

public static String commas(long l) { 
    String s = ""; 
    String pt1; 
    String pt2; 
    long pt1Number; 
    long pt2Number; 

    if (l < 1) { 
      return String.valueOf(l); 

    } else { 

     pt1Number = l/1000; 
     pt2Number = l % 1000; 

     if (pt1Number < 1000) { 
      pt1 = String.valueOf(pt1Number); 
      pt2 = String.valueOf(pt2Number); 
      s = pt1 + "," + pt2; 

     } else { 
      commas(pt1Number); 

     } 

    } 

    return s; 

} 

} 

내 코드에 어떤 문제가 있는지 누가 알 수 있습니까?

답변

1

은이 의미? 당신의 코드에서

public static String commas(long input) { 
     if (input < 1000) { 
      return String.valueOf(input); 
     } else { 
      long pt1Number = input/1000; 
      long pt2Number = input % 1000; 
      return commas(pt1Number) + "," 
        + (pt2Number==0l?"000":String.valueOf(pt2Number)); 
      } 

    } 

몇 가지 문제 :

이 재귀
  • 잘못된 사용, 당신은
  • 이 사건을 확인하지 않았다는 것을 깨달았다
      %1000==0 경우, 당신은, 예를 들어 000을 CONCAT한다 프로그램이 11 출력에서-이상 작은 경우 즉 작동하지 않습니다 유사한
  • +0

    네, 도와 줘서 고마워. 하지만 정확하게 "pt2Number == 0l"입니까? "000": "do? 나는 아직 배운 적이 없다. –

    +0

    @BenjaminPorter'c = condition? a : b'' =''조건이 참이면 c = a, else c = b' – Kent

    0

    else (pt1Number이> = 1000 인 경우) 결과는 commas(pt1Number)이 아닙니다. 함수를 호출하고 그 결과를 완전히 무시합니다. 그 후에는 s을 반환하는데, 여전히 비어 있습니다. 어쩌면 당신은 의미

    ...

    else { 
        s = commas(pt1Number); 
    } 
    

    ... 대신 :

    else { 
        commas(pt1Number); 
    } 
    
    +0

    내 매개 변수가 긴하지만 아래와 같이 수정해야 메신저 문자열을 (가 할당하는 방법이있다) 그래서 난 당신의 제안을 생각 해달라고 반환 ... –

    +0

    제 제안은 쉼표 (pt1Number);의 결과로 _something_을 (를) 수행하는 것이 었습니다. 예를 들어's'에 저장하십시오. 입력 매개 변수는 부적합합니다. – AJPerez

    0

    1로 가독성 매개 변수 이름으로 l를 사용하는 input=2000

  • 피하고 1000 출력 0,11 외모 1,0

    이 당신의 출력을 위해 그에 따라 논리 ..

    @Kent (1010) 변경하십시오된다 1,10

    나를 따라 코드가

    public class Comma { 
    public static String commas(long l) { 
        String s = ""; 
        long pt1Number;long pt2Number; 
        if (l < 1000) { 
          return String.valueOf(l); 
        } else { 
         pt1Number = l/1000; 
         pt2Number = l % 1000; 
         if (pt1Number < 1000) { 
          if (pt2Number == 0) { 
           s=pt1Number+","+"000"; 
          }else if(pt2Number>0 &&pt2Number<10) 
          { 
           s=pt1Number+","+"00"+pt2Number; 
          } 
          else if(pt2Number>9 &&pt2Number<100) 
          { 
           s=pt1Number+","+"0"+pt2Number; 
          } 
         } else { 
    
          if (pt2Number == 0) { 
           s=commas(pt1Number)+","+"000"; 
          }else if(pt2Number>0 &&pt2Number<10) 
          { 
           s=commas(pt1Number)+","+"00"+pt2Number; 
          } 
          else if(pt2Number>9 &&pt2Number<100) 
          { 
           s=commas(pt1Number)+","+"0"+pt2Number; 
          } 
    
         } 
         return s; 
        } 
    } 
    public static void main(String[] args) { 
        System.out.println(commas(1000009)); 
    } 
    

    }