Java 解析了我的文本文件-现在我如何从每行中获取最大最小值并将它们指定为双倍值?

Java 解析了我的文本文件-现在我如何从每行中获取最大最小值并将它们指定为双倍值?,java,arrays,string,variable-assignment,Java,Arrays,String,Variable Assignment,我正在尝试解析包含以下类似数据的文本文件: %abc -12-9105180 -4.31-2.29-0.3689.0048 4.987 6.123 19 %xyz 其他数据,对我的工作不重要 我编写这段代码是为了解析最上面的两行以及其他数据,除了占位符值%abc: public static void main(String[] args) { Scanner scan; File file = new File("kx=2.2_Au.txt"); try {

我正在尝试解析包含以下类似数据的文本文件:

%abc
-12-9105180
-4.31-2.29-0.3689.0048 4.987 6.123 19
%xyz
其他数据,对我的工作不重要

我编写这段代码是为了解析最上面的两行以及其他数据,除了占位符值
%abc

public static void main(String[] args) {
    Scanner scan;
    File file = new File("kx=2.2_Au.txt");
    try {
        BufferedReader in = new BufferedReader(new FileReader("kx=2.2_Au.txt"));
        String str;
        str = in.readLine();
        while ((str = in.readLine()) != null) {
            System.out.println(str);
        }

        in.close();
    } 
    catch (IOException e) {
        System.out.println("File Read Error");
    }
}
从这一点开始,我需要为上面两行中的每一行取max-min,并将它们的值赋给一个字符串变量。我不知道这部分该怎么做

编辑:

我的代码现在如下所示:

public void execute() {


File file = new File("upload:///file1");
try {
  BufferedReader in = new BufferedReader(new FileReader(file));
  String str;
  str = in.readLine();
  while ((str = in.readLine()) != null) {
    String[] parts = str.split(" ");
    for (String item : parts) {
      double min;
      double max;
      min = (Double.isNaN(min) || min > Double.parseDouble(item) ?
             Double.parseDouble(item) : min);
      max = (Double.isNaN(max) || max<Double.parseDouble(item) ?
             Double.parseDouble(item) : max);


    }
    //System.out.println(str);
  }
  in.close();
} catch (IOException e) {
  System.out.println("File Read Error");
}

}
public void execute(){
文件=新文件(“upload:///file1");
试一试{
BufferedReader in=新的BufferedReader(新文件读取器(文件));
字符串str;
str=in.readLine();
而((str=in.readLine())!=null){
String[]parts=str.split(“”);
用于(字符串项:零件){
双分钟;
双峰;
min=(Double.isNaN(min)| | min>Double.parseDouble(item)?
Double.parseDouble(项目):min);

max=(Double.isNaN(max)| | max如前所述,您需要初始化变量,而不仅仅是声明它们。我强烈建议,从有关在赋值之前初始化变量的评论的性质来看,您可以查看一些可以在internet上免费找到的代码教程。这将为您提供更好的u了解Java语言的基础知识

话虽如此,编译器直接告诉您存在问题,并准确地告诉您问题所在。初始化double,然后重新编译;错误确实会消失。如果您在进行这些更改之前尝试编译,很可能会看到类似的情况:

Somefile.java:123:错误:变量min可能尚未初始化

min=(Double.isNan(min)| |

更改此声明

double min;
double max;
而是声明和初始化变量

double min = 0.00;
double max = 0.00;
将解决您提到的特定编译器错误

尽管如此,您在实现时还将面临一些其他问题。如果您知道在输入文件中的某个点、令牌或其他符号之后,您将不关心任何其他数据,则建议将读取的行限制为仅执行工作所需的行


我还建议将赋值重写为
min
max
,因为它们不会检测到非双精度数据,这与调用
Double.isNan()
的意图类似。

您需要使用
String.split
将行拆分为多个部分great,谢谢,我将尝试“声明”不是“初始化的”.初始化包括给它一个值,你没有给它一个值,在初始化之前尝试读取它的值没有多大意义。你也应该在循环之外声明它们,否则它们会重置每个迭代。重复的.Hmmm…感谢你的回复Dukeling,但是如果我试图声明一个双精度,我会后来我想分配为一行的最小值和最大值,在我运行下面的代码之前分配它有意义吗?