读取一个TXT格式的文本文档离得内容,计算里面有多少个数字和数字的和。
while 的这个loop应该怎么写啊?
import java.util.Scanner;
import java.io.*;public class CountingAndSumming {    public static void main(String[] args) {
     String fileName = "input.txt";
       Scanner fileScan = new Scanner(new File(fileName));
      
      
       int sum = 0;
       int count = 0;
   
      
       while( )
       {
            
            count++;
       }
      
       System.out.println("There were " + count + " numbers in " + fileName + " and their sum was " + sum + ".");    }
    
    
}

解决方案 »

  1.   

    while (fileScan.hasNext()) {
    Pattern p = Pattern.compile("\\d+");
    String s = fileScan.next();
    Matcher m = p.matcher(s);
    if (m.matches()) {
    count++;
    sum += Integer.valueOf(s);
    }
    }
      

  2.   

    不用正则的方法:while (fileScan.hasNext()) {
        String s = fileScan.next();
        try {
            sum += Integer.parseInt(s);
        } catch Exception {
              continue;
        }
        count++; 
    }
      

  3.   

    自己写了一个。
    import java.io.*;
    public class ok{
      public static void main(String[] args){
       try{
       BufferedReader in=new BufferedReader(new FileReader("sample.txt"));
       String s;
       int i=0,j=1,cnt=0,sum=0,k;
       while((s=in.readLine())!=null){
       i=0;
       while(i<s.length()){
       if(i<s.length()&&(s.charAt(i)>='0'&&s.charAt(i)<='9')){
       j=1;k=i;
       while(k<s.length()&&(s.charAt(k)>='0')&&(s.charAt(k)<='9')){//统计一共多少位数
       //System.out.println("k="+s.charAt(k));
       j++;k++;
       }
       sum+=Integer.parseInt(s.substring(i,i+j-1));
       cnt++;
       }
       i=i+j;
       }
       }
      System.out.println(“sum=”+sum);//总和
       System.out.println("cnt="+cnt);//个数
       }catch(Exception e){
       e.printStackTrace();
       }
      }
    }
      

  4.   


    import java.io.*;
    public class ok{
      public static void main(String[] args){
       try{
       BufferedReader in=new BufferedReader(new FileReader("sample.txt"));
       String s;
       int i=0,j=1,cnt=0,sum=0,k=1,num=0;
       while((s=in.readLine())!=null){
       i=s.length()-1;
       while(i>=0){
       if(i>=0&&(s.charAt(i)>='0'&&s.charAt(i)<='9')){//从后往前,例如asd15,遇到5,num+=5
       k=1;num+=(s.charAt(i)-48);i--;//遇到10,num=num+1*10;……
       while(i>=0&&(s.charAt(i)>='0')&&(s.charAt(i)<='9')){
       k*=10;
       num=num+(s.charAt(i)-48)*k;
       i--;
       }
       sum+=num;num=0;
       cnt++;
       }
       i--;
       }
       }
      System.out.println("sum="+sum);//上例中"写成“了。
       System.out.println("cnt="+cnt);
       }catch(Exception e){
       e.printStackTrace();
       }
      }
    }