我的任务是开发一个程序,该程序提示用户创建自己的问题和答案,这些问题和答案将存储在arrayList中。之后,每当用户键入相同的问题时,程序将自动提取答案。
到目前为止,我做了什么:我设法将问题和答案存储到arrayList中,但是我不知道当用户问到他刚创建的问题时如何触发程序提取准确答案。这是我的代码:
import java.util.ArrayList;
import java.util.Scanner;
public class CreateQns {
public static void main(String[] args) {
String reply;
ArrayList qns = new ArrayList();
ArrayList ans = new ArrayList();
System.out.println("Type 0 to end.");
do {
Scanner input = new Scanner (System.in);
System.out.println("<==Enter your question here==>");
System.out.print("You: ");
reply = input.nextLine();
if(!reply.equals("0")) {
qns.add(reply);
System.out.println("Enter your answer ==>");
System.out.print("You: ");
ans.add(input.nextLine());
}
else {
System.out.println("<==End==>");
}
}while(!reply.equals("0"));
}
}
最佳答案
您可以使用HashMap<String, String>
存储键/值
用户输入一个问题,检查它是否在地图上,如果是,则打印答案,如果不问答案,则将其存储:
public static void main(String[] args) {
String reply;
HashMap<String, String> map = new HashMap<>();
System.out.println("Type 0 to end.");
do {
Scanner input = new Scanner(System.in);
System.out.println("<==Enter your question here==>");
System.out.print("You: ");
reply = input.nextLine();
if (!reply.equals("0")){
if (map.containsKey(reply)) // if question has already been stored
System.out.println(map.get(reply)); // print the answer
else {
System.out.println("Enter your answer ==>");
System.out.print("You: ");
map.put(reply, input.nextLine()); // add pair question/answer
}
}else{
System.out.println("<==End==>");
}
} while (!reply.equals("0"));
}
但是要直接回答您的要求,而不是
map.contains()
,您应该这样做:int index;
if ((index = qns.indexOf(reply)) >= 0){
System.out.println(ans.get(index));
}
但这不如Map方便,功能不足