2014-12-01 1 views
-1
System.out.print("Enter a sentence: "); 
String sentence = kb.readLine(); 
int sLength = sentence.length(); 

if (sentence.charAt(sLength).equals('?') 
    System.out.println("Yehey!!!!!"); 

마지막 문자를 가져 와서 "?"와 비교하려고하면 코드가 작동하지 않습니다. 문제를 어떻게 해결할 수 있습니까?사용자 입력의 마지막 문자는 어떻게 얻을 수 있습니까?

+1

.chatAt (sLength) IndexOutOfBoundsException이 발생합니다. .. 범위는 0에서 n - 1로 이동합니다. 또한, 이것은 기본 유형 인'char'를 반환합니다 :'=='사용하십시오. 'sentence.charAt (sLength - 1) == '?' ' – fge

+0

프로그래밍에서 숫자가 1이 아니라 0으로 시작한다는 것을 알아야합니다. – nikoliazekter

+0

@nikoliazekter 일부 언어로만 제공됩니다. – Maroun

답변

6

은 다음과 같아야합니다

sentence.charAt(sLength - 1) == '?' 
         ↑ 
        Your savior 

당신이 필요로 -1 길이 N의 캐릭터가, 다음 마지막 문자가 장소 N - 1에있는 경우 때문에 :

String#charAt :

가 문자를 돌려줍니다 지정된 인덱스의 값 0 length()에에서 인덱스 범위 - 또한 1

그것이 Stringchar을 반환하지 있습니다. char프리미티브이므로 equals을 호출 할 수 없으므로 ==은 정상입니다.

+1

"배열은 0 기반"입니다 - <실제로는 아닙니다; 'String'이 char 배열 인 경우'.charAt()'가 CharSequence에 의해 지정됩니다 – fge

+0

배열로 백업 되었습니까? – Maroun

+0

오오 !!!! 큰!!! 나는 그것에 대해 알려지지 않았다! !! 정말 고마워요 ... 사실 당신은 제 구세주입니다. 그래서 기본적으로 -1은 무엇을 의미합니까 ??? – Rae

0

올바른 방법은 다음과 같습니다

if (sentence.charAt(sLength-1).equals('?') 
     System.out.println("Yehey!!!!!"); 

문자열의 마지막 문자(array.length() - 1)

+0

일 때 답을 받아 들여야합니다. '.charAt()'는'String'이 아니라'char'를 반환합니다. – fge

+0

네, 알고 있습니다 :) 하지만 문자열은 char의 배열이므로 마지막 요소의 인덱스 길이는 1입니다. – Husseinfo

-1

가해야하기 때문에 :

 sentence.charAt(sLength - 1) == '?' 
관련 문제