我该怎么做才能让程序识别小写和大写的 A 并计算它们的总数?
What do I do to get the program to recognize a lower and uppercase A and count them in total?
我有这个程序,我需要它来计算数据文件中的小写和大写 A。我不确定在 charAt 或子字符串之间使用什么。它也都在一个 while 循环中,我意识到也许我需要使用 next() 方法?也许?我只需要找到这些字符并统计它们的总数即可。
import static java.lang.System.*;
import java.util.*;
import java.io.*;
public class Java2305{
public static void main(String args[]){
new Solution();
}}
class Solution
{
private Scanner fileScan;
Solution()
{
run();
}
void run()
{
int count = 0;
try
{
fileScan = new Scanner(new File("letters01.dat"));
while(fileScan.hasNext() )
{
String getA = fileScan.substring("A");
out.println(getA);
count++;
}
}
catch(Exception e){}
out.println();
out.println("The letter 'A' occurs "+count+" times.");
out.println();
out.println();
}
}
为什么要使用 Scanner
?这意味着使用正则表达式扫描文本中的分隔标记,但您并没有真正使用它。
我建议你改用Reader
,然后你可以调用它的read()
方法来读取单个字符:
int count = 0;
try
{
Reader fileReader = new FileReader("letters01.dat");
/* or:
Reader fileReader = new InputStreamReader(
new FileInputStream("letters01.dat"),
"the file's charset here"
);
*/
int value = fileReader.read();
while (value != -1)
{
char ch = (char) value;
if ((ch == 'a') || (ch == 'A'))
count++;
value = fileReader.read();
}
}
catch(Exception e){}
您可以使用 BufferedReader
来更有效地读取文件:
Reader fileReader = new BufferedReader(new FileReader("letters01.dat"));
/* or:
Reader fileReader = new BufferedReader(
new InputStreamReader(
new FileInputStream("letters01.dat"),
"the file's charset here"
)
);
*/
然后可选择逐行处理它而不是逐个字符(尽管您仍然可以这样做):
int count = 0;
try
{
String line = fileReader.readLine();
while (line != null)
{
for(int i = 0; i < line.length(); ++i)
{
char ch = line.charAt(i);
if ((ch == 'a') || (ch == 'A'))
count++;
}
line = fileReader.readLine();
}
}
catch(Exception e){}
我有这个程序,我需要它来计算数据文件中的小写和大写 A。我不确定在 charAt 或子字符串之间使用什么。它也都在一个 while 循环中,我意识到也许我需要使用 next() 方法?也许?我只需要找到这些字符并统计它们的总数即可。
import static java.lang.System.*;
import java.util.*;
import java.io.*;
public class Java2305{
public static void main(String args[]){
new Solution();
}}
class Solution
{
private Scanner fileScan;
Solution()
{
run();
}
void run()
{
int count = 0;
try
{
fileScan = new Scanner(new File("letters01.dat"));
while(fileScan.hasNext() )
{
String getA = fileScan.substring("A");
out.println(getA);
count++;
}
}
catch(Exception e){}
out.println();
out.println("The letter 'A' occurs "+count+" times.");
out.println();
out.println();
}
}
为什么要使用 Scanner
?这意味着使用正则表达式扫描文本中的分隔标记,但您并没有真正使用它。
我建议你改用Reader
,然后你可以调用它的read()
方法来读取单个字符:
int count = 0;
try
{
Reader fileReader = new FileReader("letters01.dat");
/* or:
Reader fileReader = new InputStreamReader(
new FileInputStream("letters01.dat"),
"the file's charset here"
);
*/
int value = fileReader.read();
while (value != -1)
{
char ch = (char) value;
if ((ch == 'a') || (ch == 'A'))
count++;
value = fileReader.read();
}
}
catch(Exception e){}
您可以使用 BufferedReader
来更有效地读取文件:
Reader fileReader = new BufferedReader(new FileReader("letters01.dat"));
/* or:
Reader fileReader = new BufferedReader(
new InputStreamReader(
new FileInputStream("letters01.dat"),
"the file's charset here"
)
);
*/
然后可选择逐行处理它而不是逐个字符(尽管您仍然可以这样做):
int count = 0;
try
{
String line = fileReader.readLine();
while (line != null)
{
for(int i = 0; i < line.length(); ++i)
{
char ch = line.charAt(i);
if ((ch == 'a') || (ch == 'A'))
count++;
}
line = fileReader.readLine();
}
}
catch(Exception e){}