경우에만 방법은 현재 로케일에 따라 소수점을 지정할 수 있다면, 우아하게이 문제를 해결하기 위해 Scanner
를 사용할 수있다 : 사실
Scanner sc = new Scanner(inputString);
while (sc.hasNext()) {
if (sc.hasNextInt()) {
// It is an integer
sc.nextInt();
} else if (sc.hasNextDouble()) {
// It is a double
sc.nextDouble();
} else {
// Neither, so treat it as string
sc.next();
}
}
을 Scanner
클래스는 많은 수 있습니다 double
을 구성하는 더 많은 융통성. 번호 구문과 관련하여 스캐너 클래스의 문서에서 the grammar을 확인하십시오.
토큰은 공백으로 구분해야합니다 (\p{javaWhitespace}
에 정의 된대로). 다른 구분 기호를 정의 할 수도 있지만, 구분 기호를 구성하는 항목에 대한 명확한 정의가 필요합니다.
,
과 .
을 소수 구분 기호로 동시에 사용하는 것은 실제로별로 의미가 없습니다. 345,234
은 숫자가 수천 수만 또는 수백 수의 숫자인지 여부가 명확하지 않은 예제 중 하나입니다. 사용자는 시스템이 켜져있는 Locale
에 적절한 소수 구분 기호와 천 단위 구분 기호를 사용해야합니다.
소수점으로 쉼표와 마침표를 모두 사용하는 것처럼 보입니다. – maba
시도해보십시오. 문자열의 문자를 반복하고 공백에 도달 할 때마다 현재 단어를 끝냅니다. 그런 다음 현재 단어가 double, int 또는 문자열인지 확인하십시오. –
문자를 반복하고 정규 표현식을 사용하여 정수 [? 0-9] *, double? [0-9] * \.? [0-9] * 및 문자열? [a-zA-Z \ s] – Jack