查找数组中数字的位置并给出分数,Java
Finding positions of a number in an array and giving points, Java
我正在尝试编写一个程序,生成 20 个随机数并将其存储在数组 Data[] 中,并要求用户输入他们的猜测。如果他们的数字出现在数组中,则每次出现他们得到 10 分,打印数组和所有可以找到幸运数字的位置。如果它没有出现在数组中,我必须打印数组的最低值和最高值,并且只允许再试一次。如果玩家第二次答对,他们每次出现都会得到 1 分。
例如:Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17}
如果用户输入 3
那么程序将输出
3 can be found on the following positions:
0 6 10 13
3 appears 4 times. You get 40 points!
对于相同的 Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17}
如果用户输入 2
那么程序将输出
Sorry your lucky number 2 is not in the array!
Hint: Lowest Value:1 Highest Value 65 Try again with a different number in this range.
如果他们在第二次尝试时输入 65
,那么程序将输出
You get 1 point(s)!
这是我试过的代码,但它不起作用。它一直告诉我我的数字不在数组中。最低和最高值起作用。我不知道如何解决它。我必须在明天之前完成这件事。任何帮助将不胜感激。
String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100.");
luck=Integer.parseInt(input1);
System.out.println("Input " +luck);
int Data[] = new int [20];
for( int i=0; i<Data.length;++i){
Data[i] = (int) (Math.random() * 100);
System.out.print(Data[i]+ " \t");
}
for( int i=0; i<Data.length;++i){
if(Data[i]==luck){
System.out.println(luck+ " can be found in the following positions: ");
System.out.println(i);
score=score+10;
System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points.");
}else if(Data[i]!=luck){
Arrays.sort(Data);
System.out.println();
System.out.println(luck+ " is not in the array.");
System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100.");
luck=Integer.parseInt(input1);
}
}
System.out.println();
System.out.println("Score: " +score);
}}
问题是您没有根据数组中的每个值检查您的值。如果输入的值与数组中的第一个值 (i=0) 不匹配,那么您是在向用户询问另一个值。
您需要做的是询问一个值,将其与 table 中的每个值进行比较,然后做出您的决定。它存在或不存在。
我添加了一个布尔值。如果找到我们的号码,我们将其设置为 true,否则我们会显示消息并要求用户重试。
试试这个:
boolean found = false;
for( int i=0; i<Data.length;++i){
if(Data[i]==luck){
System.out.println(luck+ " can be found in the following positions: ");
System.out.println(i);
score=score+10;
System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points.");
found = true;
}
}
if(!found){
Arrays.sort(Data);
System.out.println();
System.out.println(luck+ " is not in the array.");
System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100.");
luck=Integer.parseInt(input1);
}
最后,你需要在你的循环中实现一个计数器,然后根据需要显示你的信息......现在,它会为每个找到的实例显示“#可以在以下位置找到”和其他消息在数组中。
实现一个计数器,以及一种跟踪找到的值的索引的方法,然后您可以从 for 循环外部连贯地显示所有这些信息
编辑:为您提供更完整的实施...
这段代码基本上应该可以带您几乎到达您需要去的地方:
public static void main(String[] args) {
int Data[] = new int [20];
for( int i=0; i<Data.length;++i){
Data[i] = (int) (Math.random() * 100);
System.out.print(Data[i]+ " \t");
}
while(true){
String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100.");
int luck=Integer.parseInt(input1);
int score = 0;
String positions = "";
int counter = 0;
System.out.println("Input " +luck);
boolean found = false;
for( int i=0; i<Data.length;++i){
if(Data[i]==luck){
positions += i + " ";
counter++;
score=score+10;
found = true;
}
}
if(found){
System.out.println(luck+ " can be found in the following positions: ");
System.out.println(positions);
System.out.println(luck+ " appears " + counter + " times. You get " +score+ " points.");
}
else{
Arrays.sort(Data);
System.out.println();
System.out.println(luck+ " is not in the array.");
System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
}
System.out.println();
System.out.println("Score: " +score);
}
}
我正在尝试编写一个程序,生成 20 个随机数并将其存储在数组 Data[] 中,并要求用户输入他们的猜测。如果他们的数字出现在数组中,则每次出现他们得到 10 分,打印数组和所有可以找到幸运数字的位置。如果它没有出现在数组中,我必须打印数组的最低值和最高值,并且只允许再试一次。如果玩家第二次答对,他们每次出现都会得到 1 分。
例如:Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17}
如果用户输入 3
那么程序将输出
3 can be found on the following positions:
0 6 10 13
3 appears 4 times. You get 40 points!
对于相同的 Data[]={3,1,8,31,25,6,3,20,41,12,3,23,7,3,65,49,5,0,13,17}
如果用户输入 2
那么程序将输出
Sorry your lucky number 2 is not in the array!
Hint: Lowest Value:1 Highest Value 65 Try again with a different number in this range.
如果他们在第二次尝试时输入 65
,那么程序将输出
You get 1 point(s)!
这是我试过的代码,但它不起作用。它一直告诉我我的数字不在数组中。最低和最高值起作用。我不知道如何解决它。我必须在明天之前完成这件事。任何帮助将不胜感激。
String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100.");
luck=Integer.parseInt(input1);
System.out.println("Input " +luck);
int Data[] = new int [20];
for( int i=0; i<Data.length;++i){
Data[i] = (int) (Math.random() * 100);
System.out.print(Data[i]+ " \t");
}
for( int i=0; i<Data.length;++i){
if(Data[i]==luck){
System.out.println(luck+ " can be found in the following positions: ");
System.out.println(i);
score=score+10;
System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points.");
}else if(Data[i]!=luck){
Arrays.sort(Data);
System.out.println();
System.out.println(luck+ " is not in the array.");
System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100.");
luck=Integer.parseInt(input1);
}
}
System.out.println();
System.out.println("Score: " +score);
}}
问题是您没有根据数组中的每个值检查您的值。如果输入的值与数组中的第一个值 (i=0) 不匹配,那么您是在向用户询问另一个值。
您需要做的是询问一个值,将其与 table 中的每个值进行比较,然后做出您的决定。它存在或不存在。
我添加了一个布尔值。如果找到我们的号码,我们将其设置为 true,否则我们会显示消息并要求用户重试。
试试这个:
boolean found = false;
for( int i=0; i<Data.length;++i){
if(Data[i]==luck){
System.out.println(luck+ " can be found in the following positions: ");
System.out.println(i);
score=score+10;
System.out.println(luck+ " appears " +(luck/10)+ " times. You get " +score+ " points.");
found = true;
}
}
if(!found){
Arrays.sort(Data);
System.out.println();
System.out.println(luck+ " is not in the array.");
System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
input1 = JOptionPane.showInputDialog("Please enter another number between 0 and 100.");
luck=Integer.parseInt(input1);
}
最后,你需要在你的循环中实现一个计数器,然后根据需要显示你的信息......现在,它会为每个找到的实例显示“#可以在以下位置找到”和其他消息在数组中。 实现一个计数器,以及一种跟踪找到的值的索引的方法,然后您可以从 for 循环外部连贯地显示所有这些信息
编辑:为您提供更完整的实施... 这段代码基本上应该可以带您几乎到达您需要去的地方:
public static void main(String[] args) {
int Data[] = new int [20];
for( int i=0; i<Data.length;++i){
Data[i] = (int) (Math.random() * 100);
System.out.print(Data[i]+ " \t");
}
while(true){
String input1 = JOptionPane.showInputDialog("Please enter your lucky number between 0 and 100.");
int luck=Integer.parseInt(input1);
int score = 0;
String positions = "";
int counter = 0;
System.out.println("Input " +luck);
boolean found = false;
for( int i=0; i<Data.length;++i){
if(Data[i]==luck){
positions += i + " ";
counter++;
score=score+10;
found = true;
}
}
if(found){
System.out.println(luck+ " can be found in the following positions: ");
System.out.println(positions);
System.out.println(luck+ " appears " + counter + " times. You get " +score+ " points.");
}
else{
Arrays.sort(Data);
System.out.println();
System.out.println(luck+ " is not in the array.");
System.out.println("Hint: " +Data[0]+ " is the lowest value and " +Data[19]+ " is the highest.");
}
System.out.println();
System.out.println("Score: " +score);
}
}