这是我第一次使用2D数组。我从文本文件中读取了4行字符串,并逐字符地提取它们。我在使用已提取的字符初始化数组时遇到问题。当我尝试打印我的数组时,我不断获取内存位置,所以我假设数组没有正确初始化。任何帮助,将不胜感激。谢谢
公共课acsiiArt {
public static void main(String[] args) throws IOException
{
File file = new File("test.txt");
Scanner inputFile = new Scanner(file);
while (inputFile.hasNext())
{
inputFile.nextInt();
while (inputFile.hasNext())
{
inputFile.nextInt();
while (inputFile.hasNext())
{
char array [][]= new char[4][4];
String letters = inputFile.nextLine();
for(int i =0; i < letters.length(); i++)
{
char results = letters.charAt(i);
for (int row = 0; row < 4;row ++)
{
array[row] = new char[row+1];
for (int col =0; col< row+1; col++)
array[row][col]= results;
System.out.println(array);
}
}
}
}
}
}
}
答案 0 :(得分:0)
您正在看到2D Object#toSting
的{{1}}表示输出。在这种情况下,使用array
迭代文件然后使用substring
和toCharArray
来创建数组可能更简单。
答案 1 :(得分:0)
我猜文件开头的前两个整数告诉维度,对吧?从头顶写下这个可能它不会编译,但应该给你一个想法:
public class ACSIIArt {
public static void main(String[] args) throws IOException {
File file = new File("test.txt");
Scanner inputFile = new Scanner(file);
int x = inputFile.nextInt();
int y = inputFile.nextInt();
char [][] letters = new char[x][y];
int currentLine = 0;
String line = null;
while((line = inputFile.nextLine()) != null) {
for(int i = 0; i < line.length(); i++) {
letters[currentLine][i] = line.charAt(i);
}
}
for(int i = 0; i < x; i++) {
for(int j = 0; j < y; j++) {
System.out.print(letters[i][j]);
}
System.out.print(System.getProperty("line.separator"));
}
}
这是基本的方法。有更多奇特的方法可以做到这一点,例如line.toCharArray();
,但我认为首先要了解基础知识非常重要。