0

我需要帮助制作一个数组列表,以便在我从文本文件中读取数组时找出数组需要多少个元素。我还没有学会如何做到这一点,我们将不胜感激。如果我没有正确存储在数组中,我将显示需要修复的代码部分,因为我得到 null。这篇文章需要帮助,但下面是完整的代码。

public static void output(tokens[], correct[], percentage[], letterGrade[], double      totalAVG, int highScore, int lowScore)
 { 
PrintWriter pw = new PrintWriter(new FileWriter("Result.txt")) ;

for (int t=0 ; t< tokens.length ; t+=2 )
{   
    g = 0 ;
    pw.println(tokens[t] + "," + correct[g] + percentage[g] + letterGrade[g]) ;
    g++ ;
}
    pw.println("Average: " + totalAVG + "% (" + totalGrade + ")") ;
    pw.println("High Score: " + highScore*2) ;  
    pw.println("Low Score: " + lowScore*2) ;

pw.close() ;





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

public class Proj5 
{

public static void main(String[] args) throws IOException
{

Scanner s = new Scanner(System.in) ;

/* 这部分打开与文件的连接,分割每一行,然后将这些部分放入一个数组(令牌)中。*/

String[] tokens= information(fileCheck) ;

/* * * 打开到带有 id 和答案的文件的连接,并将它们分开返回。* @param (String a) 拉入文件名以在方法中使用 * @return 返回一个包含拆分文件的数组。*/

public static String[] information(String a) throws IOException
{   
    Scanner inFile = new Scanner (new File(a)) ; // opens connection with file
    String[] quarters = new String[] ;
    int index = 0 ;
    int lengthArray = 0 ;
    while (inFile.hasNext()) 
    {
        lengthArray++ ;
    }   
    while (inFile.hasNext())                        

// 当文件中有更多行时循环

        String line = inFile.nextLine() ;           // brings in next line to be broken up
        String[] array = line.split(",") ;
        quarters[index] = array[0]  ;           //stores lines into array tokens
        index++ ;
        quarters[index] = array[1] ;
        index++ ;
    }       
        inFile.close() ;                            // close connection to file
        return quarters ;
} // end information

/** * (打印出需要的信息) * * @param 拉入数据数组 * @param 拉入数字正确数组 * @param 拉入百分比正确数组 * @param * (列出所有参数,每行一个) * @ return None */ public static void output(tokens[], correct[], percent[], letterGrade[], double totalAVG, int highScore, int lowScore) { PrintWriter pw = new PrintWriter(new FileWriter("Result.txt") ) ;

for (int t=0 ; t< tokens.length ; t+=2 )
{   
    g = 0 ;
    pw.println(tokens[t] + "," + correct[g] + percentage[g] + letterGrade[g]) ;
    g++ ;
}
    pw.println("Average: " + totalAVG + "% (" + totalGrade + ")") ;
    pw.println("High Score: " + highScore*2) ;  
    pw.println("Low Score: " + lowScore*2) ;

pw.close() ;

} // 结束输出

} // 结束类

4

2 回答 2

0

我太矮了,爬不了那堵墙。我会给你一个 ArrayList 的例子:

ArrayList<String> dinosaur = new ArrayList<String>(); // <String> is an explicit type declaration


    // This will reference one line at a time
    String line = null;
    int i=0;
    try 
    {
      // FileReader reads text files in the default encoding.
      FileReader fileReader = new FileReader("file.txt");

      //create buffered reader obj 
      BufferedReader bufferedReader = new BufferedReader(fileReader);

//while not EOF, store line in array element
      while ( (line = bufferedReader.readLine ()) != null) {

        dinosaur.add(line);

        i++;
      }


      // Always close files.
      bufferedReader.close();
    }
    //handle exceptions
    catch(FileNotFoundException e) 
    {
      System.out.println("Unable to open file" + e);
    }
    catch(IOException e) 
    {
      System.out.println("Error reading file" + e);
    }

这将从文本文件中读取每一行并将其作为字符串存储在 ArrayList 中(尽管 List 更常见)。ArrayList 是动态的,因此您不需要知道要存储多少元素(文件中的行数)......只要堆栈中有足够的内存来处理它:p

希望这会有所帮助=)

于 2013-03-18T00:27:49.093 回答
0

以下是一些方法:

1)是提前读取文件,计算它有多少行(例如使用扫描仪的HasNextLine(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner. html#hasNextLine()),然后您可以将数组初始化为那么大并再次计数。

2)是使用一个集合,例如ArrayList<String>并在遍历文件时简单地向其中添加行。ArrayList 会根据您的需要自动调整大小以包含尽可能多或尽可能少的条目,因此您不必事先担心文件计数的行数。使用它在概念上与数组相同 -[i]可以在 ArrayList 上正常工作,以及更改 ArrayList 中的条目数addremove不是编辑已经存在的条目数的方法。

于 2013-03-18T00:27:56.737 回答