计算具有非asscii字符的文件中的行数

时间:2016-12-02 06:24:32

标签: java

免责声明:此问题与家庭作业有关。我现在已经尝试了一点,我已经拿走了我尝试过的大部分东西,因为它只是变得多余。我的问题是如何计算我的文件中具有非ascii的“行”数字符。我找到了计算出现多少非ascii字符的方法。虽然这条线路让我很难过。

例如,如果文件中的一行显示为èèèèè,则movieCount应增加1,而ascCount应增加5.但并非所有行都具有非ascii字符。

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

     //open the file
     File movieFile = new File("/home/turing/t90rkf1/d470/dhw/hw5-movies/movie-names.txt");

     InputStream file = new FileInputStream(movieFile);

     String empty = null;
     int movieCount = 0;
     int ascCount = 0;

    try {
            FileReader readFile = new FileReader(movieFile);

            BufferedReader buffMovie = new BufferedReader(readFile);


            //read while stream is not empty
            while ((empty = buffMovie.readLine()) != null){

                    //check the value for ascii
                    for(int j = 0, n = empty.length(); j < n; j++){

                    char asc = empty.charAt(j);

                            if( asc > 127 ){

                            ascCount++;

                            }
                    }

    }

2 个答案:

答案 0 :(得分:2)

如果该行仅包含ascii字符

,则创建一个返回true的方法
private static boolean isASCII(String s) 
{
   for (int i = 0; i < s.length(); i++) {
      if (s.charAt(i) > 127) 
         return false;
   }
   return true;
}

在您的主程序中:

 while ((empty = buffMovie.readLine()) != null){
        movieCount += (isAscii(empty) ? 1 : 0);
 }

答案 1 :(得分:0)

当您找到非ascii字符但未增加movieCount时,您正在增加ascCount。所以你还要增加movieCount。请使用以下代码段:

while ((empty = buffMovie.readLine()) != null){
//check the value for ascii
boolean ifMovieCountPre = false;
for(int j = 0, n = empty.length(); j < n; j++){
    char asc = empty.charAt(j);
    if( asc > 127 ){
      ascCount++;
      ifMovieCountPre  = true;
    }
}
if(ifMovieCountPre )
       movieCount++;
}

只有当存在非ascii字符并且你的非ascii将根据你的需要增加时,这将增加movieCount。

另外我建议使用正则表达式来检查非ascii字符。 另请阅读@Scary评论。