我是 Java 的初學者,我在實踐中陷入了一步,我應該將 txt 檔案匯入陣列(使用 JFileChooser)
文本格式如下 001 839 333 426 …
其中以空格分隔的每 3 個字符對應于xyz其中 x = 行號; y = 列號; v = 價值
我必須根據坐標(xy)替換板上的值
int [][] board =
{
{ 1, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 6, 0, 0, 0, 0 },
{ 0, 0, 0, 3, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 9, 0, 0, 0, 0, 0, 0 }
}
如果發現無效值,則不應使用它,例如 901(因為沒有可用的行 9)。
非常歡迎任何幫助或想法。
uj5u.com熱心網友回復:
對于那些最終感興趣的人,我發現一種進行轉換的方法可能不是最佳的,但它確實有效:
public boolean loadFromFile(String path) {
try {
int x, y, v;
Scanner sc = new Scanner(new String());
Scanner file = new Scanner(new File(path));
while (file.hasNextLine()) {
String newLine = file.nextLine();
sc = new Scanner(newLine);
while (sc.hasNext()) {
String xyvalue = sc.next();
char[] xyv = xyvalue.toCharArray();
if (xyv.length == 3) {
x = Character.getNumericValue(xyv[0]);
y = Character.getNumericValue(xyv[1]);
v = Character.getNumericValue(xyv[2]);
if (x >= 0 && x < 9 && y >= 0 && y < 9 && v > 0 && v <= 9) {
board[x][y] = v;
}
}
}
}
sc.close();
file.close();
return true;
} catch (IOException exception) {
return false;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/427709.html
上一篇:C-從文本檔案中讀取輸入(int,string,int,int)
下一篇:使用Python格式化大文本檔案
