gpt4 book ai didi

java - 有人很了解外部文件吗?

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

我应该创建一个程序,读取每行包含 3 个整数的外部文件,并找到包含这三个数字的三角形的面积。不过我们还没有学习数组,所以我想创建没有数组的程序,方法和类都可以。我只需要帮助按行读取每三个数字的文件。

数据是:

7 8 9

9 9 12

6 5 21

24 7 25

13 12 5

50 40 30

10 10 10

82 34 48

4 5 6

这是我到目前为止所拥有的:

import java.io.*;
import java.util.*;
import java.lang.*;
public class Prog610a
{
public static void main(String[] args) throws IOException
{
BufferedReader reader = new BufferedReader(new FileReader("myData.in"));
String currentLine;

int a, b, c;
double s, area;

System.out.println("A" + "\t B" + "\t C" + "\t Area");
try
{
while((currentLine = reader.readLine()) != null)
{
Scanner scanner = new Scanner(currentLine);

s = ((scanner.nextInt() + scanner.nextInt() + scanner.nextInt()) / 2);
area = Math.sqrt(s * (s - scanner.nextInt()) * (s - scanner.nextInt()) * (s - scanner.nextInt()) );

if(s < 0)
{
System.out.println(scanner.nextInt() + " \t" + scanner.nextInt() +
" \t" + scanner.nextInt() + "\t This is not a triangle");
}
else
{
System.out.println(scanner.nextInt() + " \t" + scanner.nextInt() +
" \t" + scanner.nextInt() + " \t" + area);
}
}
}
finally
{
reader.close();
}
}
}

最佳答案

通过使用扫描仪,您已经有了一个良好的开端。我建议仅使用它可能是不够的,因为您可能会得到一些格式错误的行。要处理它们,您可能希望将处理分为两部分:获取一行,然后从该行获取各个值。

这允许您捕获没有足够值或值太多的行。如果您不这样做,那么您可能会与行不对齐,从一行读取一些值,从下一行读取一些值。

BufferedReader 将允许您读取然后可以扫描的行。由于您不想使用数组,因此必须单独提取数字:

BufferedReader reader = new BufferedReader(new FileReader("myData.in"));
String currentLine;

try {
while ((currentLine = reader.readLine()) != null) {
Scanner scanner = new Scanner(currentLine);

try {
calculateTriangleArea(
scanner.nextInt(), scanner.nextInt(), scanner.nextInt()
);
}
catch (NoSuchElementException e) {
// invalid line
}
}
}
finally {
reader.close();
}

它还可以帮助您理解 Java 字符串插值。您的整个代码中都有 horizo​​ntalTab 。您可以仅使用 \t 在字符串中表达它。例如:

"\tThis is indented by one tab"
"This is not"

您可以找到字符串转义字符的完整列表here .

我的代码中的异常处理(或缺乏)可能会让您感到惊讶。在您的代码中,您捕获可能抛出的Exception。但是,您将其丢弃,然后继续在已知已损坏的扫描器上执行其余代码。在这种情况下,最好立即失败,而不是隐藏错误并尝试继续。

我的代码中确实发生的异常处理之一是 finally block 。这确保了无论读取时发生什么情况,读取器都会关闭。它包装了打开阅读器后执行的代码,因此知道阅读器不为空,应在使用后关闭。

关于java - 有人很了解外部文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458879/

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