반응형
자바 : for 루프 초기화에서 여러 변수를 초기화 하시겠습니까?
유형이 다른 두 개의 루프 변수를 갖고 싶습니다. 이 작업을 수행 할 수있는 방법이 있습니까?
@Override
public T get(int index) throws IndexOutOfBoundsException {
// syntax error on first 'int'
for (Node<T> current = first, int currentIndex; current != null;
current = current.next, currentIndex++) {
if (currentIndex == index) {
return current.datum;
}
}
throw new IndexOutOfBoundsException();
}
명령문 의 초기화는 for
지역 변수 선언 규칙을 따릅니다 .
이것은 합법적입니다 (어리석은 경우) :
for (int a = 0, b[] = { 1 }, c[][] = { { 1 }, { 2 } }; a < 10; a++) {
// something
}
그러나 원하는대로 구별 Node
및 int
유형 을 선언 하려는 것은 지역 변수 선언에 적합하지 않습니다.
다음과 같은 블록을 사용하여 메서드 내에서 추가 변수의 범위를 제한 할 수 있습니다.
{
int n = 0;
for (Object o = new Object();/* expr */;/* expr */) {
// do something
}
}
이렇게하면 메서드의 다른 곳에서 실수로 변수를 재사용하지 않도록 할 수 있습니다.
당신은 이것을 좋아할 수 없습니다. 동일한 유형의 여러 변수를 사용 for(Object var1 = null, var2 = null; ...)
하거나 다른 변수를 추출하여 for 루프 전에 선언하십시오.
변수 선언 ( Node<T> current
, int currentIndex
)을 루프 외부 로 이동 하면 작동합니다. 이 같은
int currentIndex;
Node<T> current;
for (current = first; current != null; current = current.next, currentIndex++) {
또는 어쩌면
int currentIndex;
for (Node<T> current = first; current != null; current = current.next, currentIndex++) {
초기화 블록에서 선언 된 변수는 동일한 유형이어야합니다.
설계에 따라 for 루프에서 다른 데이터 유형을 초기화 할 수 없습니다. 저는 단지 작은 예를 들었습니다.
for(int i=0, b=0, c=0, d=0....;/*condition to be applied */;/*increment or other logic*/){
//Your Code goes here
}
참고 URL : https://stackoverflow.com/questions/3542871/java-initialize-multiple-variables-in-for-loop-init
반응형
'programing' 카테고리의 다른 글
개체가 Entity Framework의 데이터 컨텍스트에 이미 연결되어 있는지 확인할 수 있습니까? (0) | 2020.09.25 |
---|---|
HTML 본문에 JavaScript를 포함하는 것이 나쁜 습관입니까? (0) | 2020.09.25 |
시작시 Windows 7에서 관리자로 프로그램을 자동으로 실행하는 방법은 무엇입니까? (0) | 2020.09.25 |
M_PI는 math.h에서는 작동하지만 Visual Studio의 cmath에서는 작동하지 않습니다. (0) | 2020.09.25 |
Uri.ToString ()과 Uri.AbsoluteUri의 차이점은 무엇입니까? (0) | 2020.09.25 |