언어 : 자바.
목표 : 부울 배열 gridA []는 입력에서 읽은 인덱스에 대해 참이되어야합니다 (즉, 입력이 "init_start 2 4 5 init_end"이면 gridA [] 인덱스 2,4 및 5가 참이됩니다). 그렇게 많이 일할 수 있었지만 두 가지 문제가 있습니다.
입력 : init_start int int int int int (...) int init_end 예 : init_start 2 6 12 init_end
문제 : (인스턴스 변수) int L (배열의 인덱스 길이를 결정하는)의 값을 초과하는 입력의 모든 정수는 무시되어야합니다.이를 통해 Array gridA [] 도메인 외부의 정수가 영향을받지 않습니다. if (scanner.nextInt! = L) {} 사용이 작동하지 않는 것 같습니다.
또한이 메서드 또는 입력이 "init_start"로 시작될 때 시작하고 입력이 "init_end"로 끝날 때 중지 할 메서드 본문이 필요합니다. 동일한 입력에서 문자열과 정수를 모두 읽을 수 있도록 코드를 작성하는 방법은 무엇입니까?
if (scanner.Next == "init_start") 다음에 a = scanner.NextInt; 내가 예상했듯이 작동하지 않았습니다.
해결 시도 : 인터넷 검색 후 스캐너에 String initialInputStart를 넣어 보았습니다. localScanner (initialInputStart); 그러나 나는 그것을 작동시키지 못했습니다. 내가 찾은 다른 정보는 스캐너를 닫았다가 다시 열라고 제안했지만 한 줄의 입력에서 정보를 읽어야하므로 도움이 될 것 같지 않습니다.
암호:
java.util.Arrays.fill(gridA,false);
java.util.Arrays.fill(gridB,false);
String initialInput;
String initialInputStart;
int a;
int i;//only for testing
i = 0;//only for testing
System.out.println("type integers"); //only for testing
while( scanner.hasNextInt() && i<5){ //I can't find a way to make loop stop without missing input so I'm using i temporarily
a = scanner.nextInt();
gridA[a] = true;
System.out.print(a);
System.out.print(gridA[a]+" ");
i++;
}//end while
"동일한 입력에서 문자열과 정수를 모두 읽을 수 있도록 코드를 작성하는 방법은 무엇입니까?"
"123, foo"와 같은 입력을 원하십니까?
String input = scanner.nextLine();
String[] parts = input.split(",");//" " to split it at an empty space
String part1 = parts[0]; // 123
int Number = Integer.parseInt(part1) // you could inline it, but i chose this version for better refference
String part2 = parts[1]; //foo
입력이 "123 또는 foo"처럼 보이면 입력을 문자열로 읽고 나중에 문자열이 숫자인지 확인해야합니다.
String input = scanner.nextLine();
if (text.contains("[a-zA-Z]+") == false){ //looks if the input does NOT contain any characters
int nummber = Integer.parseInt(input);
} else{
String text = input;
}
나중에 텍스트를 비교할 수 있습니다.
처음 언급 한 경우 :
if("init_start".equals(parts[1])){ //*
yourMethod();
}
다른 경우 :
if("init_start".equals(text)){ //*
yourMethod();
}
* 또한 : "if (scanner.Next =="init_start ")를 사용하여이 작업을 수행하려고했습니다."
*매우 중요! 문자열과 같은 객체를 비교하려면 .equals ()를 사용하십시오. "=="는 기본 유형에서만 작동합니다.
편집 : 나는 당신의 예를 읽었습니다. 내 솔루션의 조합으로 갈 수 있습니다. 공백 ( "")에서 문자열을 분할하고 정수인 경우 parts [x]를 확인하십시오. 그러나 나는이 방법을 권장하지 않습니다! 입력을 세 부분으로 나누지 않는 이유 : init_start가 함수를 시작합니다. 그 후 당신의 메소드는 당신이 Integers를 삽입 한 후 "int int int"와 같은 Integers의 입력을 기대할 것입니다. 당신의 함수는 자동적으로 멈추거나 입력 "init_stop"을 기다릴 수 있습니다. 그것은 나에게 더 합리적인 것 같습니다. 단일 라인 솔루션으로 가고 싶다면 ting을 통해 int의 수를 평가할 수 있습니다.parts[].lenght()-2
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다