2014-10-15 2 views
0

저는 Java 학습을 연습하고 있습니다.이 연습은 온라인으로 긴 정수 (예 : 2827)를 입력 한 다음 정수 (2,8과 7) = 3이다. 나는 그럼에도 불구하고,정수의 다른 자릿수를 계산하십시오.

을 수는 서로 동일하고 (튜토리얼) 내가 번호가 표시되는 등록 "사용"배열을 사용하도록 제안하는 경우 비교, 루프 및 다음 문자열과 함께 사용하여 고려 중이 야

이것은 내가 지금까지있어 무엇 :

import java.util.Scanner; 

public class UniqueInteger { 
public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    boolean[] used = new boolean[10]; 
    int uniqueNbr = 0; 

    System.out.print("Input an integer: "); 
    String nbrString = String.valueOf(scan.nextLong()); 

    for (int i = 0; i < nbrString.length(); i++) { 
     String bigI = String.valueOf(i); 
     if(nbrString.substring(i,(i+1)).equals(bigI)){ 
      uniqueNbr++; 
     } 
    } 
    System.out.println("Amount of unique digits: " + uniqueNbr); 
} 

} 

내 문제는이 코드가 작동하지 않습니다 지금, 나는 내가 여기에 올바른 접근 방식을 취하고 모르겠어요. 나는 또한 부울 배열 "used"를 포함 할 이유나 목적을 찾지 못했습니다.

  • 내 코드가 잘못되었습니다.
  • 부울 배열을 사용하는 것이 현명한 방법으로 내 코드를보다 효율적으로 만들 수 있습니까?
+0

다른 접근 방식을 취할 수도 있지만 귀하의 접근 방식은 실용적으로 보입니다. 실제 질문 있니? –

+0

게시 한 코드에 대한 문제를 설명하지 않았거나 전혀 질문하지 않았습니다. 여기서 유효한 유효한 이유는 "오프 주제"입니다. 디버깅 도움말을 찾는 질문 ("이 코드가 작동하지 않는 이유는 무엇입니까?")에는 원하는 동작, 특정 문제 또는 오류 및 질문 자체에서 재현하는 데 필요한 가장 짧은 코드가 포함되어야합니다 명확한 문제 설명이없는 질문은 다른 독자에게 유용하지 않습니다. " 그 두 가지 문제를 모두 해결할 수 있습니까? –

+0

나는 그 문제들을 지금 다루었다고 생각한다, Ken White. 내 코드에 관한 두 가지 질문을했습니다. – Michael

답변

1

문자열의 현재 숫자가 사용되었는지 (부울 배열을 사용하여) 확인해야합니다. 사용되지 않은 경우 used [num]을 true로 설정하고 uniqueNbr을 증가시킵니다.

import java.util.Scanner;

public class UniqueInteger { 
public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    boolean[] used = new boolean[10]; 
    int uniqueNbr = 0; 

    System.out.print("Input an integer: "); 
    String nbrString = String.valueOf(scan.nextLong()); 

    for (int i = 0; i < nbrString.length(); i++) { 
     int num = Character.getNumericValue(nbrString.charAt(i)); 
     if(!used[num]) { 
      uniqueNbr++; 
      used[num] = true; 
     } 
    } 
    System.out.println("Amount of unique digits: " + uniqueNbr); 
} 

} 
+0

그게 제로 이외의 다른 출력을주는 것 같지 않습니다. 아무리 내가 입력. – Michael

+0

죄송합니다. 오타를 만들었습니다. 나는 그것을 고쳤다! 지금 일해야한다. 웬일인지, 나는 항상 내가 실제로 코드를 작성할 때보 다이 웹 사이트에서 많은 오타를 만든다. 기묘한! (: – Tetramputechture

+0

편집 후 지금은 입력의 자릿수를 계산합니다. 고유 숫자가 1과 5이므로 예제 (155)는 '2'대신 '3'이됩니다. – Michael

관련 문제