【问题标题】:Each word divided on character in array每个单词在数组中的字符上划分
【发布时间】:2012-05-14 14:53:01
【问题描述】:

我在用 Java 读取 txt 文件时遇到问题。我有一个 File.txt(有这样的东西:

Lalala
Java
C++

我想将它“转换”为一个数组(例如,tab[0][0] 将是 L,然后tab[0][1] 将是 a,等等)。

我该怎么做?

【问题讨论】:

  • 我们应该给你做作业吗?你试过什么?提示,使用 FileReader,创建 InputStream> 你可以从那里读取行。
  • 你读过文件了吗?从成功读取行开始
  • 发布你目前的代码。
  • 你说你“有问题”——是什么问题?您尝试了什么,遇到了什么错误?

标签: java file java.util.scanner


【解决方案1】:

如果你有一个String,你可以通过调用String.toCharArray();将它转换成单个字符的数组

首先,将字符串拆分为单个单词...

String myExample = "Lalala Java C++";
String[] lines = myExample.split(" ");

然后将各个行拆分为字符...

String myFirstLine = lines[0];
char[] letters = myFirstLine.toCharArray();

如果您需要二维数组,则可以执行以下操作(这是一个完整示例)...

String myExample = "Lalala Java C++";
String[] lines = myExample.split(" ");

char[][] myArray = new char[lines.length][0];
for (int i=0;i<lines.length;i++){
    myArray[i] = lines[i].toCharArray();
}

这将根据您的要求将第 1 行的字母分配给 myArray[0][0]myArray[0][1] 等,并将第 2 行的字母分配给 myArray[1][0]myArray[1][1] 等。

【讨论】:

  • 这会将所有内容转换为 1 个单个 char 数组,他需要一个 char 2d 数组
  • 是的,一开始我不太明白这个要求,但我想我知道他们现在在问什么。
【解决方案2】:

如果你想要的是一个二维数组,问题是数组的宽度需要是更大单词的长度。我认为这不是一个好习惯。

如果你创建一个数组列表,可能会更好:

List<char[]> arrays = new ArrayList<char[]>();

String[] words = fullText.split(" "); //or split("\\s+") if the text contains many lines  or many spaces between the words

for(String word: words){
   char[] charsOfWord = word.toCharArray();
   arrays.add(charsOfWord);
}

这样,访问第一个单词中的第一个字符:

System.out.println(arrays.get(0)[0]);

【讨论】:

    猜你喜欢
    • 2017-06-30
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多