문자열에 느낌표가있는 경우 str.split("!")
을 사용하여 문자열을 반으로 가져옵니다. 코드가 설정되는 방식으로 느낌표가 없으면 1 개의 인덱스 배열을 얻고 2 개의 인덱스 배열이 있으면 인덱스 배열을 가져옵니다.배열에 인덱스가 있는지 감지하는 방법 (문자열 [])
코드 : 나는 느낌표가 문자열에 넣으면
String file, macroName;
String[] fileAndMacro = string.split("!");
if(fileAndMacro[0] != null)
file = new File(fileAndMacro[0]);
if(fileAndMacro[1] != null)
macroName = fileAndMacro[1];
, 그것은 작동합니다. 예를 들어 "test!string"
은 fileAndMacro[0] = "test"
및 fileAndMacro[1] = "string"
을 반환합니다.
느낌표가 없는데 문제가 있습니다 (일부는 내 코드에서 알 수 있습니다). 나는 단지 ArrayIndexOutOfBoundsException
을 얻는다. 분명히 null 체크는 그 트릭을하지 않습니다. 어떤 값이 저장 될 공간이 할당되어 있지 않으면 메모리에 null 값을 가질 수 없다는 것을 감안할 때 적절합니다.
내 이해에도 불구하고, 두 번째 색인 존재 여부. 색인이 존재하는지 여부를 실시간으로 확인하려면 어떻게합니까?
를 사용하여 배열의 길이를 확인할 수 있습니다 그들은 null이 될하지 않습니다. – fge
정말'array [0] = null'과 같은 것이 오류를 던질 것입니까? –
아니요, 이런 일은'String.split()'과 함께 _ _ 할 수 있습니다.) 배열이 비어 있으면 시도하고 액세스하면 ArrayIndexOutOfBoundsException가 발생합니다. Java의 배열은 초기화시에 할당되고 크기 조정이 불가능하며 길이가 0 인 배열이 가능합니다. – fge