gpt4 book ai didi

Java在从另一个文件读取时创建 double 组

转载 作者:太空宇宙 更新时间:2023-11-04 14:46:04 26 4
gpt4 key购买 nike

我正在尝试制作一个程序,其中有一个主类,该主类读取输入文件并调用另一个类来存储文件包含的 double 。我调用的另一个类将 double 放入两个数组中,但我是没有成功。任何帮助将不胜感激。这是主类:

package Assignments;

import java.util.Scanner;

import ui.UIAuxiliaryMethods;

public class Processing {

Processing(){
UIAuxiliaryMethods.askUserForInput();
}

private void start() {
Scanner in=new Scanner(System.in);
int numberOfClusters=in.nextInt();
int numberOfElements=in.nextInt();
int numberOfVariables=in.nextInt();

String line=in.nextLine();
String lineToIgnore=in.nextLine();
NumberRow i=new NumberRow(numberOfElements);

while(in.hasNext()){
String lineToFindDouble=in.next();
NumberRow.start(lineToFindDouble);
}
System.out.println("\nend");


}

public static void main(String[] args){
new Processing().start();
}

}

我调用来存储 double 的类是: 打包作业;

import java.util.Arrays;
import java.util.Scanner;

import ui.UIAuxiliaryMethods;

public class NumberRow {
static int i;
static double[] fatContent;
static double[] protienContent;

NumberRow(int numberOfElements){
this.i=numberOfElements;
fatContent=new double[i];
protienContent=new double[i];
}

static void start(String in){

Scanner findingDoubles=new Scanner(in);

int counter=0;
while(findingDoubles.hasNext()){
double fat=findingDoubles.nextDouble();
double protien=findingDoubles.nextDouble();
fatContent[counter]=fat;
protienContent[counter]=protien;
counter++;
}
System.out.println(Arrays.toString(fatContent));
}
}

我使用的输入文件是:

7
25
2
Mammal fat_content(%) protein_content(%)
Bison 7.9 5.9
Guinea_pig 3.9 8.1
Dolphin 14.0 10.4
Donkey 1.4 1.7
Goat 4.1 3.4
Deer 19.7 9.2
Dog 8.3 9.5
Yak 6.7 5.3
Camel 3.4 3.5
Cat 10.9 11.1
Rabbit 13.1 7.1
Llama 3.2 3.9
Human 43.9 7.4
Mule 1.8 2.0
Elephant 5.0 4.0
Horse 1.3 2.1
Rat 12.6 12.3
Reindeer 20.3 10.4
Sheep 6.4 5.6
Pig 5.1 6.6
Fox 5.9 7.4
Whale 42.3 10.9
Polar_bear 31.0 10.2
Zebra 4.8 3.0
Seal 53.2 11.2

我得到的错误是:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextDouble(Scanner.java:2387)
at Assignments.NumberRow.start(NumberRow.java:25)
at Assignments.Processing.start(Processing.java:25)
at Assignments.Processing.main(Processing.java:33)

任何帮助将不胜感激。

PS:我是初学者,所以如果我的代码对你来说很愚蠢,我深表歉意。

谢谢。

最佳答案

第一个错误

while(in.hasNext()){
String lineToFindDouble=in.next();
NumberRow.start(lineToFindDouble);
}

在此位置执行next()时,您将得到Bison。您应该将此代码更改为

 while(in.hasNextLine()){
String lineToFindDouble=in.nextLine();
NumberRow.start(lineToFindDouble);
}

因此您将传递给 NumberRow.start("Bison 7.9 5.9")

下一步

在您的 numberRow

 while(findingDoubles.hasNext())

此时扫描仪光标指向 Bison 。您应该更改为

while(findingDoubles.hasNextDouble())

这样扫描仪将继续查找 double 并等待下一个第一个 double 。

当您调用 next() 时,如果找到空格/ double /整数等,扫描仪就会停止,请检查文档以获取更多信息。

关于Java在从另一个文件读取时创建 double 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368243/

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