kullanma Anahtarlar içeride geçer: Java
Kullanıcıların tanı sorular sorar ve sonra başka bir soru sorar bir program oluşturma, yeni bir soru daha önceki bir yanıta bağlı seçilir. Bir ders kitabındaki Bölüm ödevinden alınan görüntüye dayanmaktadır. Çalışacak programı aldım, ama benim için çözümüm verimsiz görünüyor, görevimi tamamlamanın daha verimli bir yolu olup olmadığını merak ediyorum. Programın amacı, kullanıcı belirtileri almak ve daha sonra bu belirtilere dayalı bir tanı sağlamaktır. Benim içimde o kadar çok anahtarın olması dağınık görünüyor.
import java.util.*;
public class Diagnostic2 {
//main(): application entry point
public static void main(String[] args) {
System.out.println("\nFever Diagnostic Tool");
System.out.println("=====================");
System.out.println("\nDisclaimer: This tool is meant primarily to act as an indicator ");
System.out.println("of possible causes of fever symptoms. It is not meant to replace");
System.out.println("professional medical advise. If you believe you are sick ");
System.out.println("consult with your doctor about your symptoms.");
Scanner stdin = new Scanner(System.in);
System.out.print("\nDo you have a fever? (y/n): ");
char fever = stdin.next().trim().charAt(0);
String diagnosis = "Insufficient information to make diagnosis\n";
char cough = 'n';
char wheeze = 'n';
char headache = 't';
char achyJoints = 'n';
char rash = 'n';
char soreThroat = 'n';
char backPain = 'n';
char urinaryPain = 'n';
char tooHot = 'n';
char diarrhea = 'n';
char vomit = 'n';
switch (fever) {
case 'y':
System.out.print("\nAre you coughing? (y/n): ");
cough = stdin.next().trim().charAt(0);
switch (cough) {
case 'y':
System.out.print("\nAre you short of breath, wheezing, or coughing up phlegm? (y/n): ");
wheeze = stdin.next().trim().charAt(0);
switch (wheeze) {
case 'y':
diagnosis = "Possibilites include pneumonia or infection of airways.\n";
break;
case 'n':
System.out.print("\nDo you have a headache? (y/n): ");
headache = stdin.next().trim().charAt(0);
switch(headache) {
case 'y':
diagnosis = "Possibilites include viral infection.\n";
break;
case 'n':
System.out.print("\nDo you have a aching bones or joints? (y/n): ");
achyJoints = stdin.next().trim().charAt(0);
switch(achyJoints) {
case 'y':
diagnosis = "Possibilites include viral infection.\n";
break;
case 'n':
System.out.print("\nDo you have a rash? (y/n): ");
rash = stdin.next().trim().charAt(0);
switch(rash) {
case 'y':
diagnosis = "Insufficient information to list possibilities, consult with doctor.\n";
break;
case 'n':
System.out.print("\nDo you have a sore throat? (y/n): ");
soreThroat = stdin.next().trim().charAt(0);
switch(soreThroat) {
case 'y':
diagnosis = "Possibilites include throat infection.\n";
break;
case 'n':
System.out.print("\nDo you have back pain just above the waist with chills and fever? (y/n): ");
backPain = stdin.next().trim().charAt(0);
switch(backPain) {
case 'y':
diagnosis = "Possibilites include kidney infection.\n";
break;
case 'n':
System.out.print("\nDo you have pain urinating or are urinating more often? (y/n): ");
urinaryPain = stdin.next().trim().charAt(0);
switch(urinaryPain) {
case 'y':
diagnosis = "Possibilites include urinary tract infection.\n";
break;
case 'n':
System.out.print("\nHave you spent the day in the sun or hot conditions? (y/n): ");
tooHot = stdin.next().trim().charAt(0);
switch(tooHot) {
case 'y':
diagnosis = "Possibilites include sun stroke or heat exhaustion.\n";
break;
case 'n':
break;
}
}
}
}
}
}
}
}
break;
case 'n':
System.out.print("\nDo you have a headache? (y/n): ");
headache = stdin.next().trim().charAt(0);
switch(headache) {
case 'y':
System.out.println("\nAre you experiencing any of the following: pain when");
System.out.println("bending your head forward, nausea or vomiting, bright");
System.out.print("light hurting your eyes, drowsiness, or confusion? (y/n): ");
vomit = stdin.next().trim().charAt(0);
switch(vomit){
case 'y':
diagnosis = "Possibilites include meningitis.\n";
break;
case 'n':
System.out.print("\nAre you vomiting, or have had diarrhea? (y/n): ");
diarrhea = stdin.next().trim().charAt(0);
switch(diarrhea) {
case 'y':
diagnosis = "Possibilites include digestive tract infection.\n";
break;
case 'n':
System.out.print("\nDo you have a aching bones or joints? (y/n): ");
achyJoints = stdin.next().trim().charAt(0);
switch(achyJoints) {
case 'y':
diagnosis = "Possibilites include viral infection.\n";
break;
case 'n':
System.out.print("\nDo you have a rash? (y/n): ");
rash = stdin.next().trim().charAt(0);
switch(rash) {
case 'y':
diagnosis = "Insufficient information to list possibilities, consult with doctor.\n";
break;
case 'n':
System.out.print("\nDo you have a sore throat? (y/n): ");
soreThroat = stdin.next().trim().charAt(0);
switch(soreThroat) {
case 'y':
diagnosis = "Possibilites include throat infection.\n";
break;
case 'n':
System.out.print("Do you have back pain just above the waist with chills and fever? (y/n): ");
backPain = stdin.next().trim().charAt(0);
switch(backPain) {
case 'y':
diagnosis = "Possibilites include kidney infection.\n";
break;
case 'n':
System.out.print("\nDo you have pain urinating or are urinating more often? (y/n): ");
urinaryPain = stdin.next().trim().charAt(0);
switch(urinaryPain) {
case 'y':
diagnosis = "Possibilites include urinary tract infection.\n";
break;
case 'n':
System.out.print("\nHave you spent the day in the sun or hot conditions? (y/n): ");
tooHot = stdin.next().trim().charAt(0);
switch(tooHot) {
case 'y':
diagnosis = "Possibilites include sun stroke or heat exhaustion.\n";
break;
case 'n':
break;
}
}
}
}
}
}
}
}
break;
case 'n':
System.out.print("\nDo you have a aching bones or joints? (y/n): ");
achyJoints = stdin.next().trim().charAt(0);
switch(achyJoints) {
case 'y':
diagnosis = "Possibilites include viral infection.\n";
break;
case 'n':
System.out.print("\nDo you have a rash? (y/n): ");
rash = stdin.next().trim().charAt(0);
switch(rash) {
case 'y':
diagnosis = "Insufficient information to list possibilities, consult with doctor.\n";
break;
case 'n':
System.out.print("\nDo you have a sore throat? (y/n): ");
soreThroat = stdin.next().trim().charAt(0);
switch(soreThroat) {
case 'y':
diagnosis = "Possibilites include throat infection.\n";
break;
case 'n':
System.out.print("\nDo you have back pain just above the waist with chills and fever? (y/n): ");
backPain = stdin.next().trim().charAt(0);
switch(backPain) {
case 'y':
diagnosis = "Possibilites include kidney infection.\n";
break;
case 'n':
System.out.print("\nDo you have pain urinating or are urinating more often? (y/n): ");
urinaryPain = stdin.next().trim().charAt(0);
switch(urinaryPain) {
case 'y':
diagnosis = "Possibilites include urinary tract infection.\n";
break;
case 'n':
System.out.print("\nHave you spent the day in the sun or hot conditions? (y/n): ");
tooHot = stdin.next().trim().charAt(0);
switch(tooHot) {
case 'y':
diagnosis = "Possibilites include sun stroke or heat exhaustion.\n";
break;
case 'n':
break;
}
}
}
}
}
}
}
}
case 'n':
break;
}
System.out.println("--------------------------------------------------------------");
System.out.println("\nSymptoms");
if(fever == 'y') {
System.out.println("*\tFever");
}
if(cough == 'y') {
System.out.println("*\tCough");
}
if(wheeze == 'y') {
System.out.println("*\tWheezing");
}
if(headache == 'y') {
System.out.println("*\tHeadache");
}
if(achyJoints == 'y') {
System.out.println("*\tAchy joints or bones");
}
if(rash == 'y') {
System.out.println("*\tRash");
}
if(soreThroat == 'y') {
System.out.println("*\tSore throat");
}
if(backPain == 'y') {
System.out.println("*\tBack pain");
}
if(urinaryPain == 'y') {
System.out.println("*\tFrequent urination or pain urinating");
}
if(tooHot == 'y') {
System.out.println("*\tDay spent in hot conditions");
}
if(diarrhea == 'y') {
System.out.println("*\tDiarrhea");
}
if(vomit == 'y') {
System.out.println("*\tPain when bending head forward, nausea or vomiting,");
System.out.println("\tbright light hurting eyes, drowsiness or confusion.");
}
System.out.println("\nDiagnosis");
System.out.println("\t" + diagnosis);
}
}
"Anahtar" (lar) ı yuvalamayın. İşleri yollara ayırmanı öneririm. –
Woah! Etkileyici anahtar piramitleri! Ama seni reddetmeliyim ve modele bir kaynak dosyadan yüklenerek model odaklı bir durum otomasyonu kullanmayı öneriyorum. –
Bu soru codereview.stackexchange.com adresine taşınmalıdır – forgivenson