나는 내 프로젝트에서 다음 코드 조각이 :Java 스캐너가 올바르게 작동하지 않습니까?
public void addText(String s){
Scanner scan;
int newInt = Integer.parseInt(s.substring(s.indexOf('\t') + 1 + 1));
//find insertion point
String temp = "";
scan = new Scanner(text);
int prev = 0;
while(scan.hasNextInt() && newInt > scan.nextInt()){
temp += text.substring(prev, text.indexOf('\n')) + "\r\n";
prev = text.indexOf('\n') + 1;
}
text = temp + s + "\r\n" + text.substring(prev);
}
이의 목표는 기존의 문자열로 문자열을 삽입하고 다소 "숫자 순서"에 보관하는 것입니다.
String s
은 "CityName\t\tSomeNumber"
과 같은 형식의 문자열입니다. newInt
코드가 작동합니다 (디버깅으로 확인). 작동하지 않는 것은 while
루프입니다. text
에 데이터가있는 경우에도 scan.hasNextInt()
이 실패합니다.
예를 들어, text = "Charlestown\t\t9"
, s = "Downville\t\t15"
이라고 가정합니다. newInt
이 할당됩니다. while
루프는 한 번만 반복하고 15 > 9
(이 숫자의 오름차순으로 구성된 도시) 이후로 끝나야합니다. 그러나 어떤 이유로 스캐너는 조건문의 scan.hasNextInt()
부분에서 매번 false를 반환합니다.
제안 사항? 이 스캐너의 입력 내의 다음의 토큰이 nextInt() 방법을 사용하여 디폴트 기수에 근거하는 int 값으로 을 해석 할 수있는 경우
는
감사합니다. 코드의 해당 부분이 수정되었습니다! –