2011-10-26 3 views
0

사용자가 입력 한 문자 등급에 숫자를 할당하려고합니다. 사용자는 A, B 또는 C와 같은 문자를 입력 한 다음 값을 입력하여이를 정수로 저장합니다. 배열 값에 대한 사용자 입력 구문 분석

나는이 설치되었다 할 수있는 쉬운 방법을 생각 배열과 같은 : 내가 필요할 때 자신의 등급에 대한 사용자 입력 'A'는, 내가 4를 사용할 때마다 그래서

char[] grade = char[] grade = {'A','B','C','D','F'}; 
grade[0] = 4; 
grade[1] = 3; 
// ... as so on 

.

입력 (JOptionPane)을 읽고 입력 한 문자를 읽는 방법을 알아 내려고 노력하고 있습니다. 배열을 기반으로 문자 입력을 파싱하려면 어떻게해야합니까?

답변

0

문자를 int로 변환하는 것이 더 쉽습니다. char에는 기본적으로 int 값이 있습니다. 이렇게 :

int i = (char)'A'; 

이 당신은 int로 숯불 캐스팅 수 97 것이다 소문자 a를 들어 65을 얻을 것입니다, 다음 검사를 경계하고 몇 가지 연산을 수행하는 그 값을 사용합니다. 순차 문자는 순차적 정수를 산출합니다. JVM에서 실행 중이므로 다른 플랫폼에 대한 문자 집합 주문을 고려할 필요가 없으므로이 방법이 안전합니다.

그 외에도에서, 당신은 허용 입력을 제한하는 방법을보고,지도는 너무 잘 일할 수 :

Map<Character, Integer> grades = new HashMap<Character, Integer>(); 
grades.put('A', 4); //optionally also: grades.put('a' 4); 
... 

유형 PARAMS 및 자동 권투와 언 박싱이 훨씬 더 편리하게이 일을합니다.

+0

기본적으로 사용자에게 어떤 학년에 어떤 학점을 부여했는지 묻고 그 등급을 기반으로이 예에서 클래스에 대해받은 크레딧 금액으로 사용되는 할당 된 번호를 사용합니다. 그래서 A를 받았다면 그 수업에 4 학점을 받았습니다. – user1015523

+0

귀하의 질문이 분명하기 때문에 정확한 컨텍스트는 중요하지 않습니다. 내 사용자와 사용자 모두 알 수없는 방법으로 원하는 것을 할 수 있습니다. –

1

내가 바로 당신을 이해 여부, 확실하지 않다 : 그래프로의

int grade (char input) 
{ 
    return 5 - (input - 'A'); 
} 

생각해은. 컴퓨터 인코딩, Ascii 또는 UTF8에서 문자 A-F는 순차적으로 인코딩되며 A는 가장 낮지 만 0 또는 1은 아니지만 65 또는 뭔가를 나타내며 정확하게 기억하지 못합니다.

5 |    * 
    4 |     * 
    3 |     * 
    2 |      * 
    1 |      * 
    0 +-- ... ------------------*-----> 
        A B C D E F 
        65 6 7 8 9 70 

이 그래프를 그리기 위해 나는 D 형식을 F로 점프했다고 언급했습니다. 이는 의도적입니까? 그렇지 않은 경우 :

입력과 'A'의 차이를 5에서 빼면 'A'는 5 - 0, 'B'는 5 - 1이됩니다. 우리는 'A'의 수를 찾아보기를 원치 않으므로 'A'를 직접 사용합니다. 문자에 대해 연산을 수행 할 수 있으므로 괜찮습니다. 우리는 물론

return 70 - input; 

또는

return 'F' - input; 

차식의 표준 형태를 작성할 수

는 Y = MX + n은 Y 축 통해 절단 인 N을, (70), 그리고 m = -1, 우리의 경우 그라디언트, 네거티브.

+0

짧고 달콤합니다. –

+0

이것은 훌륭하게 작동하지만, 'A'이상을 어떻게 할당합니까? – user1015523

+0

필요 없음. 이 방법을 사용하는 배열은 필요하지 않습니다. 무슨 일이 일어나면 arithmethic이 char을 int로 변환하여 입력에서 뺄 수있게합니다. 기본적으로 입력과 A의 "차이"를 계산합니다. A의 경우 0입니다. B의 경우 1입니다. C의 경우 2입니다. 그러면 이것은 4에서 뺍니다. 즉 A는 결국 4를, B는 3을, C는 2를 낳습니다. 이것을 안전하게 사용하려면 사람들이 Z 등을 제공하지 않도록 입력 범위를 확인하십시오. –