gpt4 book ai didi

java - Java 中的 StdIn/Out 如何工作?

转载 作者:行者123 更新时间:2023-12-01 09:55:55 25 4
gpt4 key购买 nike

我是 Java 新手,正在尝试运行 QuickUnion 算法。我的桌面上有这些文本文件,并且想要编程来读取其中的整数。QuickUnion 类到此结束。

 public static void main(String[] args) {

int N = StdIn.readInt(); // Read number of sites
QuickUnionUF quickunion = new QuickUnionUF(N);
while (!StdIn.isEmpty()) {
int p = StdIn.readInt();
int q = StdIn.readInt(); // Read pair to connect
if (quickunion.connected(p, q)) continue; // Ignore if connected
quickunion.union(p, q); // Combine components
StdOut.println(p + " " + q); // and print connection
}
StdOut.println(quickunion.count() + " components");
}

我的问题是:StdIn 是如何工作的?如何读取文本文件?第一个测试文件包含两列数字。

最佳答案

Std 库不提供从任意文件读取所需的功能。其目的是为初学者(学生)提供一种简单的方法来编写读取和写入标准输入/标准输出的简单程序。它的功能有限1

相比之下,生产代码使用标准的System.inSystem.out,要么直接使用,要么(在System.in的情况下) >) 通过 Scanner 类。因此,要从生产代码中的文件(或标准输入)读取文本,您通常会执行以下操作:

Scanner in = new Scanner(new File("/some/path/to/file.txt"));

Scanner in = new Scanner(System.in);

然后使用各种Scanner方法来读取行或单个项目。

(您还可以使用 ReaderBufferedReader API,并以各种方式自行解析输入行。或者使用现有的解析器库来读取 CSV 文件、JSON文件、XML 文件等。)

你的例子看起来像这样:

import java.util.Scanner;
...
public static void main(String[] args) {
Scanner in = new Scanner(System.in); // replace as required!
int n = in.nextInt(); // Read number of sites
QuickUnionUF quickUnion = new QuickUnionUF(n);
while (in.hasNextInt()) {
int p = in.nextInt();
int q = in.nextInt(); // Read pair to connect
if (quickUnion.connected(p, q)) continue; // Ignore if connected
quickUnion.union(p, q); // Combine components
System.out.println(p + " " + q); // and print connection
}
System.out.println(quickUnion.count() + " components");
}

请注意,new Scanner(new File(someString)) 被声明为抛出 FileNotFoundException,您的代码必须处理该异常。

<小时/>

1 - 我的建议是尽快停止使用 StdInStdOut 和其余内容。学习使用标准 API 并进行切换。

关于java - Java 中的 StdIn/Out 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37224120/

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