문자열 배열의 특정 항목이 정수인지 여부를 확인하려고합니다.
나는 string
폼에서 infix 표현식을 split ( "")
'ing split ( "")
'in throught retracture herals를 두 개의 배열로 분할하려고합니다.하나는 정수, 운영자 용 하나, 괄호 및 기타 기타 항목을 폐기하는 동안.이것을 성취하는 가장 좋은 방법은 무엇입니까?
나는 integer.isinteger (String arg)
메소드 또는 그런 행운을 찾을 수 있다고 생각했지만 행운은 아닙니다.
해결 방법
가장 순진한 방법은 문자열을 반복하고 모든 요소가 주어진 기수에 대한 유효한 숫자인지 확인하는 것입니다.이는 적어도 한 번 각 요소를보아야하기 때문에 효율적으로 효율적입니다.나는 우리가 기수를 기반으로 마이크로 최적화 할 수 있지만 모든 의도와 목적을 위해 이것이 당신이 얻을 수있는 것만 큼 좋은 것입니다.
public static boolean isInteger(String s) {
return isInteger(s,10);
}
public static boolean isInteger(String s, int radix) {
if(s.isEmpty()) return false;
for(int i = 0; i < s.length(); i++) {
if(i == 0 && s.charAt(i) == '-') {
if(s.length() == 1) return false;
else continue;
}
if(Character.digit(s.charAt(i),radix) < 0) return false;
}
return true;
}
또는이를 Java 라이브러리에 의존 할 수 있습니다.그것은 예외 기반이 아니며, 당신이 생각할 수있는 모든 오류 상태를 잡을 것입니다.그것은 조금 더 비싸게 될 것입니다 (당신이하고 싶지 않은 비판적으로 꽉 루는 루프에서 스캐너 객체를 만들어야합니다. 그러나 일반적으로 더 훨씬 더 비싸지 않아야합니다.운영은 꽤 신뢰할 수 있어야합니다.
public static boolean isInteger(String s, int radix) {
Scanner sc = new Scanner(s.trim());
if(!sc.hasNextInt(radix)) return false;
// we know it starts with a valid int, now make sure
// there's nothing left!
sc.nextInt(radix);
return !sc.hasNext();
}
모범 사례가 당신에게 중요하지 않거나 코드 리뷰를하는 사람을 트롤하고 싶다면,이를 위해 이것을 시도하십시오.
public static boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch(NumberFormatException e) {
return false;
} catch(NullPointerException e) {
return false;
}
// only got here if we didn't return false
return true;
}
참조 페이지 https://stackoverflow.com/questions/5439529
'자바' 카테고리의 다른 글
Java에서 객체 배열 만들기 (0) | 2021.04.11 |
---|---|
ArrayList <문자열>을 문자열 [] 배열로 변환 (0) | 2021.04.10 |
문자열을 Java의 int로 변환하려면 어떻게합니까? (0) | 2021.04.10 |
java.util.Date를 문자열로 변환합니다 (0) | 2021.04.10 |
폴더의 모든 파일의 파일 이름을 가져옵니다 (0) | 2021.04.10 |
댓글