Java 创建一个程序从文本文件中读取并计算5';s输出减少了1/5
当我运行这个程序时,一切似乎都很好,除了在txt文件中有9个5的时候,它计数为8个5Java 创建一个程序从文本文件中读取并计算5';s输出减少了1/5,java,Java,当我运行这个程序时,一切似乎都很好,除了在txt文件中有9个5的时候,它计数为8个5 import java.io.*; import java.util.*; public class FileIO2 { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String filename = "Input1.txt"; Scanner myFile
import java.io.*;
import java.util.*;
public class FileIO2
{
public static void main(String[] args)
{
Scanner kb = new Scanner(System.in);
String filename = "Input1.txt";
Scanner myFile = null;
try
{
myFile = new Scanner(new FileInputStream(filename));
}
catch(Exception e)
{
System.out.println("File not found.");
System.exit(0); //close the program
}
int countNums = 0;
while(myFile.hasNext())
{
if(myFile.hasNextInt(5))
{
countNums++;
}
myFile.next();
}
System.out.println("There were " + countNums + " fives in " + filename);
}
}
Input1.txt文件内容:
5923053055
5 9
4 3 0 6
5这是你的问题:
myFile.hasNextInt(5)
从方法的文档中:
如果此扫描仪输入中的下一个令牌可以
使用nextInt()将其解释为指定(基)中的int值
方法
因此,如果下一个int值如您所期望的那样为5,则不会返回true。如果数字中的每个数字(本例中的每个数字只有一个数字)在0-4之间(基数5)
因此,将while循环更改为:
while(myFile.hasNext())
{
if(myFile.hasNextInt() && myFile.nextInt() == 5)
{
countNums++;
}
}
这一次,我们使用无参数(使用基数10,即十进制)验证数字实际上是5,并且返回给定的数字。这是您的问题:
myFile.hasNextInt(5)
从方法的文档中:
如果此扫描仪输入中的下一个令牌可以
使用nextInt()将其解释为指定(基)中的int值
方法
因此,如果下一个int值如您所期望的那样为5,则不会返回true。如果数字中的每个数字(本例中的每个数字只有一个数字)在0-4之间(基数5)
因此,将while循环更改为:
while(myFile.hasNext())
{
if(myFile.hasNextInt() && myFile.nextInt() == 5)
{
countNums++;
}
}
这一次,我们使用无参数(使用基数10,即十进制)验证数字实际上是5,并且返回给定的数字。我建议您对代码进行重构 此解决方案效果良好:
public class FileIO2 {
private static final String PATH_TO_FILE = "/home/user/temp/Input1.txt";
private static final int NUMBER_TO_FIND = 5;
public static void main(String[] args) throws FileNotFoundException {
int counter = 0;
try (Scanner scanner = new Scanner(new File(PATH_TO_FILE))) {
while (scanner.hasNextInt()) {
int currentInt = scanner.nextInt();
if (currentInt == NUMBER_TO_FIND) {
counter++;
}
}
}
System.out.println("There were " + counter + " fives in " + PATH_TO_FILE);
}
}
代码中有问题的一行是myFile.hasnetint(5)我建议您对代码进行重构 此解决方案效果良好:
public class FileIO2 {
private static final String PATH_TO_FILE = "/home/user/temp/Input1.txt";
private static final int NUMBER_TO_FIND = 5;
public static void main(String[] args) throws FileNotFoundException {
int counter = 0;
try (Scanner scanner = new Scanner(new File(PATH_TO_FILE))) {
while (scanner.hasNextInt()) {
int currentInt = scanner.nextInt();
if (currentInt == NUMBER_TO_FIND) {
counter++;
}
}
}
System.out.println("There were " + counter + " fives in " + PATH_TO_FILE);
}
}
代码中有问题的一行是myFile。hasNextInt(5)结果是OP计算了除五个或五个以上以外的任何东西。@AlecA请阅读:?结果是OP计算了除五个或五个以上以外的任何东西。@AlecA请阅读:?