gpt4 book ai didi

java - 从 1 个文件读取生成 2 个文件

转载 作者:行者123 更新时间:2023-12-02 07:29:06 24 4
gpt4 key购买 nike

我一直在为我的功课和我的生活尝试解决这个问题,但我无法解决。问题是:编写一个程序,读取“worked_example_1/babynames.txt”并生成两个文件,boynames.txt 和 Girlnames.txt,分隔男孩和女孩的数据。

这是来自 wiley.com/go/javaexamples 的工作示例 11 中针对此问题的代码:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class BabyNames
{
public static final double LIMIT = 50;

public static void main(String[] args) throws FileNotFoundException
{
Scanner in = new Scanner(new File("babynames.txt"));

RecordReader boys = new RecordReader(LIMIT);
RecordReader girls = new RecordReader(LIMIT);

while (boys.hasMore() || girls.hasMore())
{
int rank = in.nextInt();
System.out.print(rank + " ");
boys.process(in);
girls.process(in);
System.out.println();
}

in.close();
}
}

还有这个:

import java.util.Scanner;

public class RecordReader
{
private double total;
private double limit;

public RecordReader(double aLimit)
{
total = 0;
limit = aLimit;
}

public void process(Scanner in)
{
String name = in.next();
int count = in.nextInt();
double percent = in.nextDouble();

if (total < limit)
{
System.out.print(name + " ");
}

total = total + percent;
}

public boolean hasMore()
{
return total < limit;
}
}

我创建了babynames.txt并将其放入与.java文件相同的src文件夹中,如果我给出文件的直接路径,它会显示找不到文件

Scanner in = new Scanner(new File("C:/Users/me/SkyDrive/Schoolwork/CIS150AB/Chapter 11.1/src/babynames.txt"));

它找到了该文件,但给了我这个错误:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at BabyNames.main(BabyNames.java:20)

对我来说,这个错误似乎是由于第 20 行 intrank = in.nextInt(); 造成的。它在寻找 int 时寻找字符串,但这直接来自 Wiley 网站,所以我不确定。

对此的任何帮助将不胜感激,显然我不适合 Java 在线类(class)。一旦有适合我的时间表的类(class),我就会在学校上下一个类。

最佳答案

如果this是你的babynames.txt的格式,这就是会发生的事情(我想,没有尝试过)。

  • 扫描器“in”将第一个整数读入“rank”(OK)
  • 进入boys.process()
    • “in”读取名字(Jacob)
    • “in”尝试读取第一个 int (1),但发现 1.0013,它不是 int

这种情况与您的错误不符(您将从 RecordReader 而不是 BabyNames 获得堆栈跟踪),但也许这种思路适合您。

使用调试器尝试一下。如果不能,请使用 in.next() 而不是 in.nextInt() 或 in.nextDouble()。然后您可以打印该值并查看为什么它不是您想象的那样。

你的问题实际上提出了两个问题。隐藏的答案可能是:

try (InputStream inputStream = BabyNames.class.getResourceAsStream("/babynames.txt");
Scanner in = new Scanner(inputStream))
{
// do stuff with in
}

关于java - 从 1 个文件读取生成 2 个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com