2014-10-15 7 views
-1

나는 내가 올바른 방법으로 접근하고 있다고 생각하지 않는다. 내가 얼마나 큰지 상관없이 사용자가 임의의 수를 입력 할 수 있도록하는 클래스를 생성해야합니다 (물론 메모리의 제한으로 인해 실제로 무한하지는 않습니다). 나는 약간의 코드를 가지고 있지만, 나는 그 품질이 쓰레기라고 확신한다. 나는 문자열로 가장 문제가있는 것 같아 그것을 피하고있다. 나는 내가 일한 것을 올릴 뿐이다. 나는 내가 올바른 방향으로 가고 있다고 생각하지 않기 때문에 도움을 청합니다. 여기 내 코드가 지금까지 무엇을 가지고 있습니다. 사과드립니다. 나는 아주 노련한 코더 :Java에서 무한한 정수

public class InfiniteInteger implements Comparable<InfiniteInteger> { 
    // TO DO: Instance Variables 

    public final int BigNumbers; 
    public final String Infinite; 
    public final int []integerArray; 

    public InfiniteInteger(String s) { 
     // TO DO: Constructor 

     Infinite=s; 
    } 

    public InfiniteInteger(int anInteger) { 
     // TO DO: Constructor 

     BigNumbers=anInteger; 
     integerArray= new int[anInteger]; 
    } 

    public int getNumberOfDigits() { 
     // TO DO: return an integer representing the number of digits 
     of this infinite integer. // 

     int NumberOfDigits=0; 

     for(int i=0; NumberOfDigits<0;i++){ 

     } 

     return BigNumbers; 
    } 

    /** 
    * Checks whether this infinite integer is a negative number. 
    * @return true if this infinite integer is a negative number. 
    * Otherwise, return false. 
    */ 
    public boolean isNegative() { 
     // TO DO 

     if(isNegative()) { 
      return true; 
     } else return false; 
    } 

는 내가 처음으로 생성자에서 int로 문자열을 변환해야합니까 아니에요. 이전에 문자열 생성자에서 배열을 만들었지 만 많은 슬픔을 불러 일으켜서 제거하고 두 번째 생성자에 넣었습니다.

+3

(http://docs.oracle.com/javase/6/docs/api/java/ : 그것의 간단한 버전을 생성 할 때 검사 어쩌면 그것의 소스는 유용 할 수 있습니다 math/BigInteger.html) 형식을 사용하면됩니다. –

+0

대신'BigInteger'를 사용하십시오. http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html –

+0

'isNegative' 메소드는 작동하지 않을 것입니다. 왜냐하면 stopcondition없이 자신의 메소드에서 메소드를 호출하기 때문입니다 ... 무한 재귀 결과 –

답변

4

BigInteger을 사용할 수 있습니다. 다양한 길이의 비트 배열을 사용합니다.

의 연산은 느리지 만 숫자에 관계없이 (정수 인 한) 작동합니다. 사람들이 숫자을 의미한다면 또한 BigInteger 작업이 (!) 참고에 ... (특수 CPU 명령을 사용하여 예를 들어)

를 최적화, 그들은 때때로 어떤 resonable 수를 의미한다. 이 경우 long의 범위는 많은 경우에 충분합니다.

+0

java.math를 가져올 수 없습니다. 내가 그럴 필요가 없다면? – Sam

+0

@Sam : 왜? 이 숙제는 ... –

+0

예. 배열은 사용할 수 있지만 목록, 가방 또는 데이터 구조는 사용할 수 없습니다. – Sam

2

를 사용하여 자바 내장 클래스 BigInteger, BigInteger 인 자바 독에서

변경이 불가능한, 임의 정밀도의 정수를 위해.

+0

이것은 질문에 대답하지 않습니다. 질문에 대한 대답은 "아니. 당신은 이런 식으로 문자열을 사용하지 않을거야." –

+2

@ MikkelLøkke [this constructor] (http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#BigInteger%28java.lang.String%29)과 같은 소리입니다. –

+0

@ MikkelLøkke OP 게시판에 아무런 물음표가 없으므로 어쨌든 기술적 인 질문이 없습니다. – Joffrey