如何让我的代码在用户拨打 ussd 代码后运行

问题描述 投票:0回答:1

我一直在练习如何在用户向服务提供商请求 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));

 
java arrays exception indexoutofboundsexception
1个回答
0
投票

您的代码抛出

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:
                //....
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.