我做了代码,但结果是0。你能帮我解决这个问题吗?提前致谢
注意:不应将空白或空格视为符号。
import java.util.*;
import java.io.*;
public class KerkoSimbolet{
private File fileIn;
public KerkoSimbolet(File fileIn){
this.fileIn = fileIn;
}
public void countSymbols()throws IOException{
int count = 0;
FileReader reader = new FileReader(fileIn);
FileWriter fw = new FileWriter("donati");
try{
while(reader.read()!= -1){
//if(!reader.equals(" "))
count++;
}
}
catch(IOException e){
e.printStackTrace();
}
finally{
reader.close();
}
try{
fw.write(count);
fw.flush();
}
catch(IOException e){
e.printStackTrace();
}
finally{
fw.close();
}
}
public static void main(String []arg){
File fi = new File("ubt.txt");
KerkoSimbolet ks = new KerkoSimbolet(fi);
try{
ks.countSymbols();
}
catch(IOException e){
e.printStackTrace();
}
}
}
有时我会使用阿尔巴尼亚语,因为家庭作业来自那里。
下面我提出的新代码计算空间
import java.util.*;
import java.io.*;
public class KerkoSimbolet{
private File fileIn;
public KerkoSimbolet(File fileIn){
this.fileIn = fileIn;
}
public void countSymbols()throws IOException{
int count = 0;
FileReader reader = new FileReader(fileIn);
FileWriter fw = new FileWriter("donati");
try{
while(reader.read()!= -1){
if(!reader.equals(""))
count++;
}
}
catch(IOException e){
e.printStackTrace();
}
finally{
reader.close();
}
try{
fw.write(Integer.toString(count));
fw.flush();
}
catch(IOException e){
e.printStackTrace();
}
finally{
fw.close();
}
}
public static void main(String []arg){
File fi = new File("ubt.txt");
KerkoSimbolet ks = new KerkoSimbolet(fi);
try{
ks.countSymbols();
}
catch(IOException e){
e.printStackTrace();
}
}
}
答案 0 :(得分:2)
问题在于你如何编写计数,而不是计算本身。根据{{3}},FileWriter#write(int)
:
写一个字符。
这不是你想要的(我猜)。正确的实施将是
public void countSymbols() throws IOException{
int count = 0;
try(FileReader reader = new FileReader(fileIn)) {
int cread;
while((cread = reader.read()) != -1){
//if(!reader.equals(" "))
count++;
}
}
try(FileWriter fw = new FileWriter("donati")) {
fw.write(Integer.toString(count));
}
}
答案 1 :(得分:0)
你的
while(reader.read()!= -1){
//if(!reader.equals(" ")) // I think you wanted to use reader.read() here
count++;
}
一旦你读到一个你必须将它存储在一个变量中的字符,然后检查它是否是space
,也是错误的
执行以下操作:
int input;
try{
while((input = reader.read())!= -1){
if(input!=32) // 32 is the ascii value of space
count++;
}
}