这是另一个新手,需要帮助解决编码困境。我尝试创建的程序是一个小型数据库,必须使用三个并行数组(userNumber、player 和 highScore)。目的是用户应在提示时输入用户号码,程序将显示该人的信息。如果输入的号码不存在,则程序应向他们显示输入的号码,并让他们重新输入用户号码,直到输入正确的号码。
我现在遇到的问题是,除了数组中的第一个用户编号之外,程序不接受任何用户编号,无论它是否是数组列表中的有效编号。此外,错误消息仅显示第一个“错误”数字,无论输入“错误”数字多少次。
简而言之,我认为正确的问题是:
1.) 为了让程序返回与输入的 userNumber 相对应的数组条目的信息,我到底应该更改什么?
2.) 我该如何更改才能使每条错误消息显示刚刚输入的“不正确”数字?
这是我的代码:
import java.util.Scanner;
public class HighScoreSearch
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int[] userNumber = new int[5];
String[] player = new String[5];
Double[] highScore = new Double[5];
userNumber[0]= 1;
userNumber[1]= 2;
userNumber[2]= 3;
userNumber[3]= 4;
userNumber[4]= 5;
player[0]= "Morpheus";
player[1]= "Neo";
player[2]= "Cereal Killer";
player[3]= "Crash Override";
player[4]= "Acid Burn";
highScore[0]= 853797.67;
highScore[1]= 999999.99;
highScore[2]= 15097.34;
highScore[3]= 864513.16;
highScore[4]= 543188.68;
System.out.print("Enter User# ");
int scan= input.nextInt();
int i=0;
while (scan!=userNumber[i])
{
System.out.printf("Error #%s Is Unknown User", scan);
System.out.print("Enter User# ");
scan=input.nextInt();
}
System.out.printf("%s, user# %s, has a high score of: %s", player[i], userNumber[i], highScore[i]);
}
}
最佳答案
您没有使用输入的值 - 请考虑
while (scan < userNumber[0] || scan > userNumber[4])
{
System.out.printf("Error #%s Is Unknown User", scan);
System.out.print("Enter User# ");
scan=input.nextInt();
}
// now use the value
System.out.printf("%s, user# %s, has a high score of: %s",
player[scan-1], userNumber[scan-1], highScore[scan-1]);
当然,您确实应该循环
userNumber
数组来检查该号码是否存在。实际上,这样的解决方案需要您创建保存此信息的单个对象,然后拥有这些对象的 List
或 array
关于java - 从并行数组中搜索和显示信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43928266/