Моя программа написана на французском языке, но просто для краткого объяснения моей проблемы, это то, что происходит каждый раз, когда я пытаюсь создать программу, которая вычисляет результаты по переменным, поступающим от пользовательского ввода, используя уравнение.
Говорит, что пользователь указывает свой вес, количество спирта, которое он выпил, и крепость этого спирта.
Это уравнение определяет, является ли спирт крови:
спирт крови = (количество * сила) / (вес * 0,4)
4 переменные находятся перед программой, объявлены и инициализированы, чтобы иметь возможность дать переменной (спирт крови) значение самого уравнения.
Но результат всегда дает NaN, как будто программа не использует пользовательский ввод для переменной, а инициализирует 0 для всех из них.
Обычно я обхожу это путемпросто не инициализируя переменные, а помещая уравнение, где необходимо, результаты внутри программы, внутри цикла, содержащего весь пользовательский ввод, например:
int v1;
int v2;
int v3;
while (..) {
v1=read.input
v2=read.input
v3= v1/v2
}
Интересно, есть ли другой способ сделатьКомпилятор использует пользовательский ввод для уравнения, даже если переменные были инициализированы в начале основного.
Если он может сделать мой запрос, вот мой код, и пока он компилируется, для переменной alcoolemie я получаю NaN .
public class Alcoolemie {
public static void main ( String [] args) {
// Constantes
final String MSG_SOL_QTE_BOISSON = "Entrez la quantité de boisson"
+ " consommée(onces) :";
final String MSG_ERR_QTE_BOISSON = "Erreur, la quantité doit être entre"
+ " 1.0 et 80.0 onces." ;
final String MSG_SOL_TAUX_ALCOOL = "Entrez le taux d'alcool de la "
+ "boisson consommée(%): " ;
final String MSG_ERR_TAUX_ALCOOL = "Erreur, le taux doit être entre"
+ " 0.5 % et 100.0 %." ;
final String MSG_SOL_POIDS = "Entrez le poids de la personne(kilos) :" ;
final String MSG_ERR_POIDS = "Erreur, le poids doit être entre 25.0 et 200.0"
+ " kilos." ;
// declaration de variables
double onces= 0 ; // quantité d'alcool consommée par la personne
double tauxAlcool= 0; // taux d'alcool de la boisson
double poids= 0 ; // poids en kilo de la personne
double alcoolemie = (double)((onces*tauxAlcool)/(poids*0.4)); // taux d'alcoolemie de la personne
// sollicitation de la quantite d'alcool consommee
System.out.println(MSG_SOL_QTE_BOISSON);
onces = Clavier.lireDouble();
while (onces <1.0 || onces > 80.0 ) {
System.out.println(MSG_ERR_QTE_BOISSON);
System.out.println(MSG_SOL_QTE_BOISSON);
onces = Clavier.lireDouble();
}
// sollicitation du taux d'alcool de la boisson consommee
System.out.println(MSG_SOL_TAUX_ALCOOL);
tauxAlcool = Clavier.lireDouble();
while (tauxAlcool <0.5 || tauxAlcool > 100.0 ) {
System.out.println(MSG_ERR_TAUX_ALCOOL);
System.out.println(MSG_SOL_TAUX_ALCOOL);
tauxAlcool = Clavier.lireDouble();
}
// sollicitation du poids de la boisson consommee
System.out.println(MSG_SOL_POIDS);
poids = Clavier.lireDouble();
while (poids <25.0 || poids > 200.0 ) {
System.out.println(MSG_ERR_POIDS);
System.out.println(MSG_SOL_POIDS);
poids = Clavier.lireDouble();
}
// Affichage du taux d'alcoolemie
System.out.println("Votre taux d'alcool dans le sang est de" + alcoolemie
+ "\n");
if (alcoolemie >= 0.08) { // Message taux d'alcoolemie dangeureux
System.out.println("Attention! Votre taux d'alcool dans le sang dépasse"
+ "la limite sécuritaire de 0.08 .") ;
}
}
}
Спасибо.