2014-12-05 124 views
-2

输入文件以这种方式每次有一行数据:第1行:字符串,第2-4行:整数,第5行:字符串等我需要计数字符串的总数并忽略整数。我怎么能这样做?这里是我的代码:计算.txt输入文件中的字符串出现次数

import java.util.Scanner; 
import java.io.*; 
public class Project5 { 

public static void main(String[] args) { 
    Scanner in = new Scanner(System.in); 
    System.out.println("Enter the file name: "); 
    String fileName = in.nextLine(); 
    int stringCounter = 0; 
    try { 
     File file = new File(fileName); 
     Scanner inputFile = new Scanner(file); 
     String SnumStudents = inputFile.nextLine(); 
     int numStudents = Integer.parseInt(SnumStudents); 
     Student [] studentList = new Student[numStudents]; 
     for (int i = 0; i < numStudents; i++) 
     { 
      String line = inputFile.nextLine(); 
      String score1 = inputFile.nextLine(); 
      String score2 = inputFile.nextLine(); 
      String score3 = inputFile.nextLine(); 
      studentList [i] = new Student(line, Integer.parseInt(score1), Integer.parseInt(score2), Integer.parseInt(score3)); 
     } 
     System.out.println("Name\t\tScore1\tScore2\tScore3\tTotal"); 
     System.out.println("---------------------------------------------"); 
     for (int i=0; i< studentList.length;i++){ 
      System.out.println(studentList[i].getName() + "\t" + studentList[i].getScore1() + "\t" + studentList[i].getScore2() + "\t" + studentList[i].getScore3() + "\t" + studentList[i].getTotal()); 
     } 
     System.out.println("---------------------------------------------"); 
     Integer i = Integer.valueOf(SnumStudents); 
     stringCounter++; 
     System.out.println(stringCounter); 
     inputFile.close(); 
    } catch (IOException e) { 
     System.out.println("There was a problem reading from " + fileName); 
    } 
    finally { 
    } 
    in.close(); 
} 
} 

输入文件:

9 
Andy Borders 
200 
250 
400 
John Smith 
120 
220 
330 
Alvin Smith 
225 
300 
278 
+0

请参阅正则表达式(正则表达式) – NickJ 2014-12-05 15:46:55

+0

我们还没有教过关于使用它。我需要一种本质上是初学java的方法。 – 2014-12-05 15:49:51

+0

我无法弄清楚如何让它只添加字符串而不是整数。 – 2014-12-05 15:50:50

回答

0

一个可行的办法(伪代码)

  1. 初始化计数器(跟踪弦数)

    int stringCounter = 0; 
    
  2. 使用Reader or a Scanner

    Scanner scan = new Scanner(file); 
    
  3. 遍历每一行,并确定是否行是一个数字,试图一旦退出循环解析值

    while(scan.hasNext()) { 
        String currentLine = scan.nextLine(); 
        try { 
         Integer i = Integer.valueOf(currentLine); 
        } catch (NumberFormatException nfe) { 
         stringCounter++; 
        } 
    } 
    
  4. 您的计数器将有答案

+0

我用我的尝试更新了它。我无法获得两个nameTotal变量链接。 – 2014-12-05 16:36:38

+0

请提供一个文本文件的例子....你是读实际的数字还是单词“int”? – gtgaxiola 2014-12-05 16:43:21

+0

添加了输入文件。 – 2014-12-05 16:45:35

相关问题