Я написал код, который читает в файле, как это:
Daan Jansen M 1.78 83
Sophie Mulder V 1.69 60"
Он должен вернуть результат, как это:
Mr. Johnson’s BMI is 26.2 and is unhealthy.
Mrs. Miller’s BMI is 21.0 and is healthy."
Это основано на вычисленииweight / length2, которые являются двумя последними числами из входного файла.
После запуска кода и выбора файла я получаю ошибку followig:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Unknown Source)
at java.base/java.util.Scanner.next(Unknown Source)
at java.base/java.util.Scanner.nextDouble(Unknown Source)
at BodyMassIndex.BodyMassIndex.readLine(BodyMassIndex.java:28)
at BodyMassIndex.BodyMassIndex.readFileIn(BodyMassIndex.java:18)
at BodyMassIndex.BodyMassIndex.start(BodyMassIndex.java:39)
at BodyMassIndex.BodyMassIndex.main(BodyMassIndex.java:43)
Я не получаючто я делаю не такКто-нибудь видит проблему?
Вот код основного класса и класса Person, который хранит данные из файла.
package BodyMassIndex;
import java.io.PrintStream;
class Person {
PrintStream out;
static final char GENDER_MEN = 'M';
static final char GENDER_WOMAN = 'V';
static final double MINIMUM_BMI= 18.5;
static final double MAXIMUM_BMI=25.0;
double length;
int weight;
char gender;
double bmi;
String name;
String surname;
String status;
String call;
Person(double length, int weight,char gender,String name,String surname){
this.length= length;
this.weight=weight;
this.gender= gender;
this.name=name;
this.surname=surname;
}
String checkGender(){
if(gender=='M'){
call="Mr";
}
else{
call="Mrs" ;
}return call;
}
double bmi (){
double bmi = weight/(length*length);
this.bmi=bmi;
return bmi;
}
void checkHealth(){
if(bmi >= MINIMUM_BMI && bmi<=MAXIMUM_BMI){
status= "healthy";
}
else{
status= "unhealthy";
}
}
void printMethod(String status){
out.printf("%s",status);
}
}
package BodyMassIndex;
import java.io.PrintStream;
import java.util.Scanner;
import ui.UIAuxiliaryMethods;
class BodyMassIndex {
PrintStream out;
BodyMassIndex() {
out = new PrintStream(System.out);
}
void readFileIn() {
Scanner fileScanner =
UIAuxiliaryMethods.askUserForInput().getScanner();
while (fileScanner.hasNext()) {
String information = fileScanner.nextLine();
readLine(information);
}
}
void readLine(String information) {
Scanner personScanner = new Scanner(information);
while (personScanner.hasNext()) {
String name = personScanner.next();
String surname = personScanner.next();
char gender = personScanner.next().charAt(0);
double length = personScanner.nextDouble();
int weight= personScanner.nextInt();
Person een = new Person(length, weight, gender,name,surname);
een.bmi();
een.checkHealth();
een.checkGender();
out.printf("%s %s's bmi is %.2f, and is %s \n",een.call,
een.surname,een.bmi,een.status);
}
}
void start() {
readFileIn();
}
public static void main(String[] argv) {
new BodyMassIndex().start();
}
}