Java 在for循环之外无法识别数组

Java 在for循环之外无法识别数组,java,arrays,string,Java,Arrays,String,我试图编写一个程序,从外部文件中获取输入,打印它,然后计算世界总长度以及文件中3个字母单词的频率。我应该只使用字符串方法。。。我尝试从输入创建一个行数组,然后使用.split创建另一个数组来分析每个单词。然而,每次我尝试测试字数或编写代码段来计算3个字母单词的频率时,我都会得到一个错误,即找不到符号。。。我不知道这是什么意思。有人能帮我解释一下这个错误的含义和修复方法吗 import java.util.*; import java.io.*; public class Program { p

我试图编写一个程序,从外部文件中获取输入,打印它,然后计算世界总长度以及文件中3个字母单词的频率。我应该只使用字符串方法。。。我尝试从输入创建一个行数组,然后使用.split创建另一个数组来分析每个单词。然而,每次我尝试测试字数或编写代码段来计算3个字母单词的频率时,我都会得到一个错误,即找不到符号。。。我不知道这是什么意思。有人能帮我解释一下这个错误的含义和修复方法吗

import java.util.*;
import java.io.*;

public class Program
{
public static void main(String args[]) 
{

Scanner inFile = null; //adds the data
try { 
inFile = new Scanner (new File("prog512h.dat"));} 
catch (FileNotFoundException e) {
System.out.println ("File not found!");
System.exit (0);}      

    String[] line = new String[18]; //there are 18 lines of code in the external file
    int wordcount=0;


    for (int i=0; i<18; i++){
    line[i] = inFile.nextLine();
    System.out.println(line[i]);
    String word[] = line[i].split(" ");  
    }

    wordcount = word.length();
    System.out.println();
    System.out.println("Total Wordcount: " +wordcount);

}}

您正在循环中创建一个局部变量,因此一旦离开循环,它就超出范围

详细阅读变量范围。最简单的修复方法是在进入循环之前声明变量——不过请注意,每次都会覆盖变量,因此只有在循环的最后一次才会执行任何操作

你可能真的想做:

wordCount += word.length;

在循环内。

您正在循环内创建一个局部变量,因此一旦离开循环,它就超出范围

详细阅读变量范围。最简单的修复方法是在进入循环之前声明变量——不过请注意,每次都会覆盖变量,因此只有在循环的最后一次才会执行任何操作

你可能真的想做:

wordCount += word.length;

在循环内部。

现在,您的代码本身没有多大意义。即使在for循环外可以看到
word[]
,它也只能表示循环完成后的最后一行

但是,如果您只想在不对代码进行任何重大更改的情况下更新wordcount,则可以在循环中更新
wordcount

int wordcount = 0;

for (int i=0; i<18; i++)
{
    line[i] = inFile.nextLine();
    System.out.println(line[i]);
    String word[] = line[i].split(" ");  
    wordcount += word.length;
}
int-wordcount=0;

for(int i=0;i现在,您的代码本身并没有多大意义。即使在for循环外部可以看到
word[]
,它也只会表示循环完成后的最后一行

但是,如果您只想在不对代码进行任何重大更改的情况下更新wordcount,则可以在循环中更新
wordcount

int wordcount = 0;

for (int i=0; i<18; i++)
{
    line[i] = inFile.nextLine();
    System.out.println(line[i]);
    String word[] = line[i].split(" ");  
    wordcount += word.length;
}
int-wordcount=0;

for(int i=0;iscope,scope和scope。您需要在循环外定义数组,并且可能需要重新考虑在for循环中的赋值,以确保没有重写该值。我已经尝试过了,但是当我在循环外定义数组时,我不能使用word[]没有定义长度…范围、范围和范围。您需要在循环外定义数组,并可能重新考虑在for循环中的赋值,以确保值不会被重写。我已经尝试过了,但在循环外定义数组时,我不能使用word[]没有定义长度…我在尝试以下操作时出现此错误:Program.java:28:error:找不到symbol wordcount+=word.length();^symbol:method length()位置:String[]类型的变量word1错误抱歉,这是一个数组,不是字符串,所以它应该是.length;没有括号。我会修复它。好的,谢谢!现在,我如何在该循环中测试数组中单个单词的长度?有更简单的循环吗?word[index].length()将为您提供数组中位置索引处字符串的长度。真正的问题是您计划如何处理信息?使用if-then语句确定单词的长度是否等于3,并可能设置一个计数器…但我一直遇到的难题是如何测试每个索引…在整个for循环运行之后,所有在不离开数组范围的情况下..看到问题了吗?我在尝试以下操作时出现此错误:Program.java:28:错误:找不到symbol wordcount+=word.length();^symbol:method length()位置:String[]类型的变量word1错误抱歉,这是一个数组,不是字符串,所以它应该是.length;没有括号。我会修复它。好的,谢谢!现在,我如何在该循环中测试数组中单个单词的长度?有更简单的循环吗?word[index].length()将为您提供数组中位置索引处字符串的长度。真正的问题是您计划如何处理信息?使用if-then语句确定单词的长度是否等于3,并可能设置一个计数器…但我一直遇到的难题是如何测试每个索引…在整个for循环运行之后,所有不离开数组的作用域..看到问题了吗?