나는 for-each 루프를 사용하여 기본 자바 프로그램에서 char의 2 차원 배열을 이동한다. 끝에 작은 부분을 제외하고는 작동합니다.for each와 2 차원 배열에 할당하기 Java
static String letters = "abcdefghijklmnopqrstuvwxyz";
public static boolean checkIsNumeric(String s) {
boolean haveBeenNonDigitCharacters = false;
char[] chars = s.toCharArray();
for(char c : chars)
if(!Character.isDigit(c)) {
haveBeenNonDigitCharacters = true;
break;
}
if(haveBeenNonDigitCharacters)
return false;
else
return true;
}
public static char[][] createArray() {
String height;
String width;
Scanner s = new Scanner(System.in);
do {
System.out.println("How tall do you want the array to be?");
height = s.next();
} while(!checkIsNumeric(height));
do {
System.out.println("How wide do you want the array to be?");
width = s.next();
} while(!checkIsNumeric(width));
int intHeight = Integer.parseInt(height);
int intWidth = Integer.parseInt(width);
char[][] chars = new char[intWidth][intHeight];
for(char c[] : chars) {
for(char d : c)
d = ' ';
}
return chars;
}
public static char[][] fillArray(char[][] a) {
int counter = 0;
for(char c[] : a) {
for(char d : c) {
if(counter >= 26)
counter = 0;
d = letters.charAt(counter);
counter++;
}
}
return a;
}
public static void main(String[] args) {
char[][] chars = createArray();
chars = fillArray(chars);
for(char c[] : chars) {
for(char d : c) {
System.out.print(d);
if(d == ' ')
System.out.print("a");
}
System.out.println("");
}
}
는 기본적으로, 내가 원하는 무엇을, 사용자 지정 크기와 어떤 2 차원 배열을하고,이 가득 찰 때까지 반복해서 알파벳의 편지와 함께 그것을 채울 수 있습니다 : 여기 내 클래스입니다. checkIsNumeric
메서드는 String
이 숫자인지 확인하고 createArray
메서드는 사용자 지정 차원을 사용하여 2 차원 배열을 만들고 fillArray
메서드는 문자열의 문자로 배열을 채 웁니다. 하지만 메인의 끝에서 배열을 반복하면서 각 문자를 인쇄하면 아무 것도 인쇄되지 않습니다. 왜?
Perfect- 당신을 감사합니다. 왜 for-each는 같은 일을하지 않습니까? –
@Rickay :'d' ('char d : c')는 배열의 특정 위치에있는'char'의 복사본입니다. 그것은 배열 안의'char'에 대한 참조가 아니므로 본질적으로 그 값을 임시 변수에 할당 할 수 있습니다. – AusCBloke
아 ... 나는 각 루프가 그렇게 작동한다는 것을 결코 알지 못했습니다! 와우 감사합니다! –