我一直在练习如何在用户向服务提供商请求 ussd 代码后实施我的程序。我一直在从事一个个人项目,该项目将通过网络向当地人提供医疗信息,帮助他们了解如何在无需与卫生官员会面的情况下获取健康信息。
package medicationinfo;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
public class MedicationInfo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
ArrayList<String> diseases = new ArrayList<>(Arrays.asList("CHOOSE THE DISEASE YOU WANT TO KNOW MORE ABOUT\n\n" + "1. Malaria\n" + "2. Respiratory Infections\n" + "3. Diarrheal Diseases\n " + "4. Malnutrition\n" +
"5. HIV/AIDS\n" + "6. Measles\n" + "7. Meningitis\n" + "8. Tuberculosis\n" +
"9. Schistosomiasis\n" + "10. Neglected Tropical Disease (NTD's"));
//System.out.println("Select a disease:");
//System.out.println("1. Malaria");
// System.out.println("2. Respiratory Infections");
// System.out.println("3. Diarrheal Diseases");
// System.out.println("4. Malnutrition");
// System.out.println("5. HIV/AIDS");
// System.out.println("6. Measles");
//System.out.println("7. Meningitis");
//System.out.println("8. Tuberculosis (TB)");
// System.out.println("9. Schistosomiasis");
// System.out.println("10. Neglected Tropical Diseases (NTDs)");
// System.out.println("0. Exit");
System.out.println(diseases);
System.out.print("Enter your choice: ");
choice = scanner.nextInt();
switch (choice) {
case 1:
//System.out.println("MALARIA");
System.out.println(diseases.get(1));
System.out.println("1. Prevention");
System.out.println("2. Symptoms");
System.out.println("3. Treatement");
System.out.print("Choose what you want to know about MALARIA: ");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("PREVENTION"); // ways of preventing malaria
System.out.println("Use insectcides");
System.out.println("Use bed nets");
System.out.println("Indoor residual spraying");
break;
case 2:
System.out.println("SYMPTOMS"); // symptoms of malaria
System.out.println("fever");
System.out.println("Chills");
System.out.println("Sweating");
System.out.println("Headaches");
System.out.println("Nausea vomit");
System.out.println("Bodyaches");
break;
case 3:
System.out.println("TREATMENT"); // treatment of malaria
break;
default:
System.out.println("EXIT");
}
break;
case 2:
System.out.println("Respiratory Infections");
System.out.println("1. Prevention");
System.out.println("2. Symptoms");
System.out.println("3. Treatement");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("PREVENTION");
break;
case 2:
System.out.println("SYMPTOMS");
System.out.println("sudden high fever");
System.out.println("severe headache");
System.out.println("stiff neck");
System.out.println("nausea and vomiting");
System.out.println("sensitivity to light");
System.out.println("confusion or altered consiousness");
break;
case 3:
System.out.println("TREATMENT");
break;
default:
System.out.println("EXIT");
}
break;
我刚刚从我编写的代码中提供了一些内容,所以我需要有关如何实现 ussd 使用的帮助。
我也尝试将疾病放入 ArrayList 中,但每当我调用指定要打印的索引的 List 时,它都会显示
IndexOutOfBoundsException
。这里我替换了代码
//System.out.println("Select a disease:");
//System.out.println("1. Malaria");
// System.out.println("2. Respiratory Infections");
// System.out.println("3. Diarrheal Diseases");
// System.out.println("4. Malnutrition");
// System.out.println("5. HIV/AIDS");
// System.out.println("6. Measles");
//System.out.println("7. Meningitis");
//System.out.println("8. Tuberculosis (TB)");
// System.out.println("9. Schistosomiasis");
// System.out.println("10. Neglected Tropical Diseases (NTDs)");
// System.out.println("0. Exit");
与
ArrayList<String> diseases = new ArrayList<>(Arrays.asList("CHOOSE THE DISEASE YOU WANT TO KNOW MORE ABOUT\n\n" + "1. Malaria\n" + "2. Respiratory Infections\n" + "3. Diarrheal Diseases\n " + "4. Malnutrition\n" +
"5. HIV/AIDS\n" + "6. Measles\n" + "7. Meningitis\n" + "8. Tuberculosis\n" +
"9. Schistosomiasis\n" + "10. Neglected Tropical Disease (NTD's"));
并在这里调用它
System.out.println(diseases.get(1));
您的代码抛出
IndexOutOfBoundsException
的原因是因为您实际上并未创建包含 11 个选项的 List
,而是创建了位置 0 处具有单个元素的 List
,这是所有选项的串联。这就是 diseases.get(1)
抛出异常的原因,因为您试图在位置 1 中索引不存在的第二个元素。
如果您想创建
List
选项,则应使用逗号而不是加号分隔每个 String
。像这样:
ArrayList<String> diseases = new ArrayList<>(Arrays.asList(
"CHOOSE THE DISEASE YOU WANT TO KNOW MORE ABOUT\n",
"1. Malaria",
"2. Respiratory Infections",
"3. Diarrheal Diseases",
"4. Malnutrition",
"5. HIV/AIDS",
"6. Measles",
"7. Meningitis",
"8. Tuberculosis",
"9. Schistosomiasis",
"10. Neglected Tropical Disease (NTD's)"));
这是代码的调整版本:
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
ArrayList<String> diseases = new ArrayList<>(Arrays.asList(
"CHOOSE THE DISEASE YOU WANT TO KNOW MORE ABOUT\n",
"1. Malaria",
"2. Respiratory Infections",
"3. Diarrheal Diseases",
"4. Malnutrition",
"5. HIV/AIDS",
"6. Measles",
"7. Meningitis",
"8. Tuberculosis",
"9. Schistosomiasis",
"10. Neglected Tropical Disease (NTD's)"));
diseases.stream().forEach(System.out::println);
System.out.print("\nEnter your choice: ");
choice = scanner.nextInt();
scanner.nextLine(); //gets rid of line terminator for your next read
System.out.println(diseases.get(choice));
switch (choice) {
case 1:
//...
break;
case 2:
//...
break;
//case ...
default:
//....
}
}
}