免责声明:此问题与家庭作业有关。我现在已经尝试了一点,我已经拿走了我尝试过的大部分东西,因为它只是变得多余。我的问题是如何计算我的文件中具有非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++;
}
}
}
答案 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评论。