【问题标题】:hasNext() method confusionhasNext() 方法混淆
【发布时间】:2015-11-23 22:20:35
【问题描述】:

我似乎无法让我的 for 循环使用某些文本行填充字符串数组。为清楚起见:inputFile 是我读过的一个文件,看起来有点像这样:

3
Bob
121
124
124 
Susan
454
241
524
Richie
789 
124 
547 

3 表示文件中有多少“学生”,而我的起始值是 1 而不是 0。

actualFile 是我想要存储各种名称的字符串数组。 这是我的代码。

注意:我不想为此使用数组列表。只是数组。

    for (int z = 1; inputFile.hasNext(); z = z +3) {
    actualFile(z) = actualFile +  "\n" + inputFile;
    }
    System.out.println(actualFile);

我希望最终输出看起来像这样:

Bob
Susan
Richie

编辑对 Jordon Johns 的回放: 我没有得到任何带有固定代码的输出:

    String [] actualFile = new String [50];
    for (int z = 1; inputFile.hasNext(); z = z +3) {
        actualFile[z]= actualFile +  "\n" + inputFile;
    }
    System.out.println(actualFile);

我收到错误消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 52

inputFile 是我这样准备的文件:

    System.out.print("Enter file name: "); 
    String userFile = in.nextLine(); 
    File file = new File(userFile); 
    Scanner inputFile = new Scanner(file); 

【问题讨论】:

  • 你对Java语法和数组了解多少?
  • @SotiriousDelimanlois 我只是一个初学者。我可能只是在这里遗漏了一些我已经知道的非常简单的东西。
  • 你认为actualFile(z) = 做了什么,你为什么这么认为?
  • 我相信actualFile(z) 说根据for循环打开的增量将信息存储到右侧。我认为这是因为它在 matlab 中是这样工作的。
  • 这感觉像是一项任务?无论如何,究竟是什么问题?除非 actualFile() 恰好是某种方法,否则 actualFile(z) 不是有效的语法。 actualFile[z] 可能是您的意思。提供更多关于你卡住的细节。 (你的输出是什么?)

标签: java oop io


【解决方案1】:

我猜是这样的。我不知道为什么不使用ArrayList...

int maxZ = inputFile.nextInt(), z = 0;

while(inputFile.hasNext()){
  if(!inputFile.hasNextInt()){
    if(z < maxZ){
        actualFile[z] = inputFile.next();
        z++;
    }
  }
  else inputFile.next();
}

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

注意:这是一种糟糕的方法,几乎​​总是会导致异常,这就是为什么 ArrayList 在这里会更好。

您无法像尝试那样打印数组。您必须循环打印每个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-01
    • 2011-09-19
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    相关资源
    最近更新 更多