gpt4 book ai didi

java - 正确读取两行时出现InputMismatchException?

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

我正在读取 .txt 文件的两行(ui.UIAuxiliaryMethods;用于此目的)来计算患者的 BodyMassIndex(BMI),但当达到 PatientLenght 时,我收到 inputmismatchException。这是我的两行输入,用\t:

分隔
Daan Jansen M   1.78    83
Sophie Mulder V 1.69 60

按姓名 - 性别 - 身长 - 体重排序。这是我的代码,用于保存字符串、 double 和整数中的所有元素:

package practicum5;

import java.util.Scanner;
import java.io.PrintStream;
import ui.UIAuxiliaryMethods;

public class BodyMassIndex {

PrintStream out;

BodyMassIndex() {
out = new PrintStream(System.out);
UIAuxiliaryMethods.askUserForInput();
}

void start() {
Scanner in = new Scanner(System.in);

while(in.hasNext()) {
String lineDevider = in.nextLine(); //Saves each line in a string

Scanner lineScanner = new Scanner(lineDevider);

lineScanner.useDelimiter("\t");
while(lineScanner.hasNext()) {
String patientNames = lineScanner.next();
String patientSex = lineScanner.next();
double patientLength = lineScanner.nextDouble();
int patientWeight = lineScanner.nextInt();
}
}
in.close();
}
public static void main(String[] args) {
new BodyMassIndex().start();
}
}

有人能解决这个问题吗?

最佳答案

你的名字有两个标记而不是一个,所以lineScanner.next()只会获取名字的 token 。

由于理论上一个名称可以有超过 2 个标记,因此请考虑使用 String.split(...)相反,然后将最后两个标记分别解析为数字,double 和 int,倒数第三个标记为性别,其余标记为名称。

另一个问题是,当您使用完 lineScanner 对象后,您不会关闭它,因此,如果您继续使用该对象,请不要忘记在使用完毕后释放其资源。

关于java - 正确读取两行时出现InputMismatchException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13608691/

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