2

我已经浏览了与我已经在这里的问题类似的问题,但没有找到任何对我有用的东西。

基本上我要做的是逐行读取一个充满字符串的文件,逐行打印,然后逐字打印。我想使用 .split 创建每个单独字符串的数组来完成此操作。

例如,我的文件上写着:
肥猫是黑色
的 母牛跳过月亮
我来打招呼世界

等等

我已经弄清楚如何读取文件并逐行打印文件,但我不知道如何逐字打印。这三个中的每一个都有自己的功能,所以我不确定这是否在放置某些东西时发挥了任何作用。

这是我迄今为止在我的方法中所拥有的:

static public void printWords( String [ ] arr, int count )
{
    String [] s2 = arr[0].split( " " ); 

    for( int i = 0; i < count; i++)
    {
        System.out.println(  s2 [i] );
    }

    System.out.println();  
}

但是,这给了我一个错误。我切换了几件事,但每次它要么只打印线条,要么在某个点停止。我在 main 中唯一拥有的是与此有关的方法调用,这不是问题。如果有人有任何见解,将不胜感激。谢谢!

编辑:

我的代码中的“计数”是我正在阅读的文件中的行数。所以为此,它是 3。

我已经调整了代码以获得我需要的东西,但是它只打印第一句话。

String [] s2 = arr[0].split( " " );
    for (int j = 0 ; j < count ; j++)
    {

        for( int i = 3; i < s2.length; i++)
        {

        System.out.print(  s2 [i] + " " );
        }
    System.out.println();

    }

}

例如,这只会打印
The fat cat was black

,然后结束。我正在尝试围绕它构建另一个循环(如我的代码所示),但它最终只打印了 3 次“The fat cat was black”,而不是移动到文件的下一行。

4

4 回答 4

3

尝试这样的事情:

static public void printWords(String [ ] arr)
{

  for(String s : arr) {
      String[] s2 = s.split(" ");
      for(String results : s2) {
          System.out.println(results);
      }
  }

}

有了这个,你也不需要 count 变量。

于 2013-10-17T16:07:05.493 回答
0

如果这是一个家庭作业问题,该计数只能用于有意义的行数。您接近解决方案,但您的 split 语句位于错误的位置。

字符串数组 arr 包含文件中的字符串,计数是从文件中获取的行数,因此它是遍历 arr 数组的迭代器的限制。通过使用单独的迭代器来遍历 s2 数组,您的想法是正确的,因为它只包含来自 arr 的单行中的单词。

尝试这个:

static public void printWords( String [ ] arr, int count )
{
    for (int j = 0 ; j < count ; j++)
    {
        String [] s2 = arr[j].split( " " );
        for( int i = 0; i < s2.length; i++)
        {
            System.out.print(  s2 [i] + " " );
        }
        System.out.println();
    }
}
于 2014-05-07T20:15:55.207 回答
0

您的 for 循环在 count 而不是 (array.length || count) 处停止可能是一个错误

于 2013-10-17T16:36:21.760 回答
0

专门按空格分割。

public void split() {
            ArrayList<String> myArray=new ArrayList<>();
            myArray.add("The fat cat was black");
            myArray.add("The cow jumped over the moon");
            for (String strLine : myArray) {
                String[] strWord = strLine.split("[\\s']");
                for (String s : strWord) {
                    System.out.println(s);
                }
            }

        }

这里[\\s']代表空格、制表符、换行符。

于 2016-10-06T13:37:18.007 回答