2013-12-14 5 views
-1

2^1000 = 2147483647, 지금은 답변에 모든 개별 숫자를 더하고 싶습니다 (예 : 2 + 1 + 4 + 7 + 4 ...) 이것은 내 코드이지만 메신저가 대답을 -10으로 얻었습니다. 이것은 나의 논리입니다 : 는 문자 배열을 를 숯불 그 배열 에 모든 문자를 넣어 int 배열을 만들고 그 배열로 모든 문자를 넣어 다음 요소를 추가하고 해당 문자열로 변환 문자열 에 2147483647로 변환배열에 문자열을 추가하는 방법

내 코드

int total = 0; 
    int x = (int) Math.pow(2, 1000);   
    System.out.println("2^1000 = " + x); 

    String power = Integer.toString(x); 

    ArrayList<Integer> powstoint = new ArrayList<Integer>(); 
    //From string to char 
    char[] stringtochar = power.toCharArray(); 
    for(int b = 0; b<stringtochar.length;b++){ 
     powstoint.add(b, power.indexOf(Integer.parseInt(power))); 
     total = total + powstoint.get(b); 
    } 
    System.out.println(total); 

    } 
+1

'?'을 추가하는 것을 잊지 마십시오. 질문하기! 어떤 사람들은이 페이지에서 '?'을 검색합니다. '질문'에 아무 것도 없으면 다음 (실제) 질문으로 직접 이동하십시오. –

답변

1

.

숫자가 10 자리이므로 출력이 -10입니다.

원하는 것을 얻으려면 Character.getNumericValue(char ch)을 사용하십시오.

char[] stringtochar = power.toCharArray(); 
for(int b = 0; b<stringtochar.length;b++){ 
    powstoint.add(b, Character.getNumericValue(stringtochar[b])); 
    total = total + powstoint.get(b); 
} 

프로그램에 List을 사용할 필요가 없습니다. 직접 다음과 같이 합을 수행 할 수 있습니다 전화 번호를 저장하고 오버 플로우 방지하기 위해

사용 BigDecimal :

당신이 오일러 프로젝트 문제 # 16을하고있는 것처럼

for(char c : power.toCharArray()){ 
    total += Character.getNumericValue(c); 
} 

것 같다

BigDecimal x = new BigDecimal(Math.pow(2, 1000)); 

다음 문자 배열을 얻으려면 동일한 절차를 사용하십시오.

char[] array = x.toString().toCharArray(); 
+0

도와 주셔서 감사합니다. 내가 프로그래밍에서 이해하지 못하는 것 중 하나는 배워야 할 방법의 양입니다. 아직 초보자인데, 전에는 BigDecimal이나 Character.getNumericValue (char ch) 메소드에 대해 들어 보지 못했습니다. – Tloz

+0

@Tloz 더 많은 프로그램을 사용하면 더 많은 API 문서를보고 더 많이 배워야 할 것입니다. 이 사이트는 새로운 것을 배우는 데에도 매우 유용합니다. =) –

1

2^anything는 홀수가 될 수 없습니다.

2^10002147483647보다 훨씬 큽니다.

정수 오버플로가 다시 발생합니다. int2^1000에 적합하지 않습니다.

0

largest possible int value214783647이고, 이는 2^31-1입니다.

2^1000은 가능한 가장 큰 값인 int보다 큽니다. 따라서 가장 큰 값 (214783647)이됩니다. 귀하의 정수 오버 플로우 문제가 power.indexOf(Integer.parseInt(power)) 항상 -1를 반환하는 것입니다 사실 합니다 (docs 참조)에도 불구하고

관련 문제