我正在开展这个项目,希望我编写一个输入20个数字的程序,每个数字介于10和100之间。读取每个数字时,只有在它不是已读取的数字的副本时才显示它。我唯一困惑的部分是如何检查用户可能输入的重复值。如果用户确实输入了重复值,则不应再次存储它。
此外,输入的值应在沿用户先前输入的值输入后打印出来,例如: 23 23 45 23 45 67 23 45 67 12 等等。
我仍然是java编程的新手,所以任何帮助都会很棒。
import java.util.*;
public class NumberArray
{
public static void main(String[] args)
{
// declare an array with 20 elements
Scanner input = new Scanner( System.in );
int num[] = new int[20];
int index = 0;
int enteredNumbers = 0;
while( enteredNumbers < num.length )
{
System.out.print( "\nEnter number: ");
int numberInput = input.nextInt();
if (numberInput >= 10 && numberInput <= 100)
{
num[index] = numberInput;
System.out.println("Number stored.");
}
//Check if numbers repeat--if not add to array
else if(num[index] == numberInput)
{
System.out.println("Duplicate value entered!\n");
}
else
{
System.out.println("Invalid Number, enter within range.\n");
}
// increment number of entered numbers
System.out.print(num[index] + " ");
System.out.println();
enteredNumbers++;
index++;
}
}
}
答案 0 :(得分:2)
如果您要查找输入数字的重复项,一个建议是将索引从1到100的布尔数组都设置为false。从用户读取数字后,使用输入的数字作为数组的索引,如果该位置先前为false,则将该位置标记为true。如果您之前发现该位置是真的,那么您发现了一个副本,您可以进行打印。
答案 1 :(得分:1)
我们会坚持只使用数组,因为您是一名较新的程序员,并且可能不熟悉您可用的无数集合。
首先,您需要一种方法来检查重复项的整个输入值数组。
//if the array contains the number just input, return true.
//else return false.
public static boolean checkForDuplicates(int[] array, int enteredValue){
for(int i=0;i<array.length;i++){
if(array[i] == enteredValue)
return true;
}
return false;
}
每次输入数字时,您都要检查它是否在您正在执行的适当范围(10到100),然后调用此方法以查看您的数组是否有重复项。
如果输入的号码已经存在,您将打印出所有存储的号码。让我们为此创建另一种方法来保持清洁。
public static void printArray(int[] ary, int enteredValues){
for(int i=0;i<enteredValues;i++){
System.out.print(ary[i]+" ");
}
System.out.println();
}
答案 2 :(得分:0)
使用集合,在获取输入后使用set.add()将其添加到集合中。它将根据它是否已存在返回一个布尔值。检查结果并显示相应的消息。做一些作业人......:)