2013-06-10 1 views
0

사용자가 임의의 6자를 입력 할 수있게 해주는 프로그램으로이 문자를 순서대로 정렬합니다. Ex 사용자 입력 j, d, e, l, w, q 및 프로그램 출력 d, e, j, l, q, w.정렬 방법을 통해 문자열을 구성하는 방법

불행히도 코드가 괴롭혀서 물건을 분류하지 않습니다. 참고 : 나는 공중에서 GUI를

를 사용하고 나는 그들이 "addButton"를 눌러 클래스 결국 모든 입력 된 문자가 포함 된 TextField의 편지에서 사용자가 입력 한 후

class Abc { 
     String letter; 

     Abc (String _letter) { 
      letter = _letter; 
     } 
    } 

    ArrayList <Abc> alphabet = new ArrayList <Abc>(3); //note its 3, not 6 like in the example 

을 수용 할 수있는 배열을 만든 배열에 값을 추가하고 저장합니다.

String letter = letterField.getText(); 

     //Store values in array 
     Abc a = new Abc(letter); 
     alphabet.add(a); 

이제 실제 '정렬'부분입니다. 사용자가 "재생"버튼을 누르면 발생합니다.

String[] abc = new String[3]; //LINE I FORGOT TO ADD 

for (int k = 0; k < abc.length; k++) { 
      abc[k] = letterField.getText(); 

      int x; 
      for (int i = 0; i < abc.length; i++) { 
       // Asume first value is x 
       x = i; 
       for (int j = i + 1; j < abc.length; j++) { 
        //find smallest value in array (random) 
        if (abc[j].compareToIgnoreCase(abc[x]) < 0) { 
         x = j; 
        } 
       } 
       if (x != i) { 
        //swap the values if not in correct order 
        final String temp = abc[i]; 
        abc[i] = abc[x]; 
        abc[x] = temp; 
       } 
       textArea.append(abc[i] + "\n");// Output correct order 
      } 
     } 

내가 원래 정수를 정렬하는이 코드를 사용했다, 그 프로그램이 프로그램 사이의 유일한 차이는 INT/문자열 내가 현재 일하고이 하나 인 문자 입력에 사용자를 허용하고 프로그램 수행 정수 프로그램에서했던 것처럼 무작위로 추출하지 마십시오.

나는 이것이 속임수를 쓰고 글자를 정리하는 데 충분한 코드라고 생각했지만 외관상으로는 아닙니다. I 입력 문자와 배열 키를 누릅니다에 추가는 "플레이"프로그램 괴물과 사랑스러운 오류가 팝업 실제로 문제에 대한

, ...

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "d" 

참고 : 'D'인 내가 프로그램을 테스트 한 마지막 시간 동안 입력 한 마지막 편지 ... 5 초 전.

힌트 나 조언을 주시면 감사하겠습니다.

+0

힌트 : 구글'NumberFormatException'. 그리고 줄 번호를 확인하십시오. – keyser

+0

당신의 에러는 코드에서 보여줄 수 없습니다. 그리고 u는 for 루프를 항상 같은 값으로 설정하고 있습니다.'abc [k] = letterField.getText();'그리고 null을 가진 ur 배열을 선언했을 경우 nullPointerException을 던질 것입니다. .. – nachokk

답변

1

NumberFormatException은 텍스트를 숫자로 파싱하려고 시도하지만 텍스트가 숫자가 아닙니다 (예 : "d").

당신은이 코드가 정수로 작업한다고 말한 다음 문자로 작업하도록 변환했습니다. 대개 입력을 숫자로 구문 분석하는 코드 (여기서는 표시하지 않은 코드)를 꺼내는 것을 잊었을 가능성이 큽니다. 이 코드를 꺼내어 원래 입력 한 텍스트로 사용자의 입력을 받아 들여야합니다.

+0

나는 그 코드를 두 번 확인했지만 아무 것도 찾지 못했습니다. 비록 내가이 질문에 한 줄의 코드를 놓쳤다. 나는이 코드를 옆에 추가하고 주석을 달았다. 나는 정보를 저장하기 위해 생성 한 클래스/배열과 내가 잊어 버린 무작위 배열 사이에 '연결 해제'가 있다는 것을 알았습니다. 코드의 정렬 부분에 배열이있게됩니다. 그럼, 어떻게 연결을 끊어야합니까? – user2407152

+0

예외가 throw 된 줄 번호가 포함 된 추적이 예외가 있어야합니다. 이 줄 번호는 코드가 잘못 된 위치를 알려줍니다. – rgettman

+0

자바에서 가르치는 사람 - 초보자로서 일반적으로 코딩에 대한 가장 최근의 대답은 내 프로그램 전체에서 한 줄에 밑줄이 그어져 있지 않은 것을 고려하여 내가 잘못한 것을 말한 줄에 대해 이해하지 못한다. 일반적으로 내가 줄을 맴돌면 왜 작동하지 않는지에 대한 설명이 튀어 나올 것입니다.) 스스로 코드를 다시 읽으라는 질문을하는 것이 무례합니까? 나는 지난 1 시간 3 분 동안 내 눈을 밖으로 봤다. – user2407152

0

아마도 사용자가 입력 한 코드 부분에서 parseInt() 또는 비슷한 것을 사용하고있을 것입니다. String에서 임의의 숫자로 입력을 더 이상 변경하지 않으려면 해당 메소드가 종료되어야합니다. 그건 그렇고, 단지 정보를 위해서 java의 클래스 배열에는 몇 가지 정렬 방법이 포함되어 있습니다. 이것들을 확인할 수 있습니다 site

관련 문제