我需要使用不帶空格的輸入來填充二維陣列,因此為此我首先嘗試使用“字串”。
import java.util.Scanner;
import java.util.Arrays;
public class TikTakToe {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[][] TikTakToe = new char[3][3];
System.out.print("Enter cells: ");
String enter = scanner.next();
for (int i = 0; i < TikTakToe.length; i ) {
for (int j = 0, l = 0; j < TikTakToe[i].length && l < enter.length(); j , l ) {
TikTakToe[i][j] = enter.charAt(l);
}
}
for (char[] chars : TikTakToe) {
System.out.println(Arrays.toString(chars).substring(1).replaceFirst("]",
"").replace(", ", " "));
}
}
}
Input: XOXOXOXOX
Output:
X O X
X O X
X O X
在外部“for”回圈進入下一階段之后,解決變數“l”的問題。我該如何解決?
uj5u.com熱心網友回復:
你的問題是你l在嵌套for回圈中定義了變數。因此,當該回圈回傳時,將l被洗掉。
您需要做的是l在第一個回圈之前定義,這樣它的范圍就是整個方法。
...
char[][] TikTakToe = new char[3][3];
System.out.print("Enter cells: ");
String enter = scanner.next();
int l = 0; // <-- **I moved the declaration here**
for (int i = 0; i < TikTakToe.length; i ) {
for (int j = 0 /*removed the declaration from here*/; j < TikTakToe[i].length && l < enter.length(); j , l ) {
TikTakToe[i][j] = enter.charAt(l);
}
}
...
uj5u.com熱心網友回復:
int l = 0您應該在回圈外初始化。因為它將在內部回圈運行時重新初始化。
所以你的最終代碼看起來像: -
import java.util.Scanner;
import java.util.Arrays;
public class TikTakToe {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[][] TikTakToe = new char[3][3];
System.out.print("Enter cells: ");
String enter = scanner.next();
int l = 0; // initialize here
for (int i = 0; i < TikTakToe.length; i ) {
for (int j = 0; j < TikTakToe[i].length && l < enter.length(); j , l ) {
TikTakToe[i][j] = enter.charAt(l);
}
}
for (char[] chars : TikTakToe) {
System.out.println(Arrays.toString(chars).substring(1).replaceFirst("]",
"").replace(", ", " "));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/483654.html
上一篇:在IntelliJ中創建完整的包路徑而不是一個接一個
下一篇:洗掉字串中-前后的空格
