Java 告诉用户输入的数字是否已存储在阵列中
我有一段代码,要求用户输入一个数组大小(不能超过50),数组大小成功设置为数组 我的问题在第二段代码中。 基本上,我希望它存储用户输入的数字(这是可行的),但是,如果该数字已经提供给数组,则会告诉用户该数字已经添加,并且该数字没有存储。示例:用户输入1、4、6、1。当再次给出1时,程序应告诉用户数字1已存储在数组中 我能做些什么来制作程序(使用ArrayList我可以使用.contains,但数组似乎没有这个功能)Java 告诉用户输入的数字是否已存储在阵列中,java,Java,我有一段代码,要求用户输入一个数组大小(不能超过50),数组大小成功设置为数组 我的问题在第二段代码中。 基本上,我希望它存储用户输入的数字(这是可行的),但是,如果该数字已经提供给数组,则会告诉用户该数字已经添加,并且该数字没有存储。示例:用户输入1、4、6、1。当再次给出1时,程序应告诉用户数字1已存储在数组中 我能做些什么来制作程序(使用ArrayList我可以使用.contains,但数组似乎没有这个功能) publicstaticvoidmain(字符串[]args){ 扫描仪阅读器=
publicstaticvoidmain(字符串[]args){
扫描仪阅读器=新扫描仪(System.in);
int[]listA;
while(true){
System.out.println(“输入listA的数组大小:”);
int listAsize=Integer.parseInt(reader.nextLine());
如果(列表大小>50){
System.out.println(“数组大小不能超过50!”);
}否则{
listA=新的int[listAsize];
//System.out.println(列表长度);
打破
}
}
int计数器=0;
while(计数器<列表长度){
System.out.print(“输入要添加到列表中的编号:”);
int inputListA=Integer.parseInt(reader.nextLine());
**if(listA.equals(listA[counter])){**
System.out.println(inputListA+“已添加到数组中,请输入其他数字”);
}否则{
listA[计数器]=输入listA;
计数器++;
}
}
代码中的问题:
if (listA.equals(listA[counter]))
对于int-listA[]
使用哈希集
- 无需指定初始大小
- 如果元素已经存在,
将返回add()
false
- 最简单、最好的解决方案是使用HashSet()
通过将用户限制为唯一的元素,您是在说“我真的不想要数组,我真的想要一个集合”此条件不正确:
listA.equals(listA[counter])
您需要设置一个从零到计数器-1
的循环,并根据inputListA
值检查每个元素。如果有值,循环应设置一个布尔
标志,如下所示:
boolean dup = false;
for (int i = 0 ; i != counter ; i++) {
if (listA[i] == inputListA) {
dup = true;
break;
}
}
// If we went through listA up to count and dup remained false,
// listA must be a new number; otherwise, it's a duplicate.
if (dup) {
System.out.println(inputListA + " was already added to the array, enter a different number");
}
如果必须使用数组,但不限于引入数组列表,则可以使用
arrays.asList
将其转换为数组列表
Arrays.asList(yourArr).contains(someVal)
或者您可以编写自己的contains
方法,只需在每个元素上循环,查看它是否在数组中
boolean hasElmt = false;
for (int val : yourArr) {
if (val == someVal) {
hasElmt = true;
break;
}
}
由于它是一个基元数组,因此没有可以使用的方法。您必须使用
for
循环迭代数组,并检查每个索引的值
for(int i = 0; i < listA.lenght; i++) {
if(inputListA == listA[i]) {
// it's already on the array
}
}
for(int i=0;i
如果您需要使用数组
int counter = 0;
while (counter < listA.length) {
System.out.print("Enter number to add to listA: ");
int inputListA = Integer.parseInt(reader.nextLine());
if (found(listA,inputListA,counter)) {
System.out.println(inputListA + " was already added to the array, enter a different number");
} else {
listA[counter] = inputListA;
counter++;
}
}
public boolean found (int[]list,int num,int counter){
for(int i = 0;i<counter;i++){
if(list[i]==num)
return true;
}
return false;
}
int计数器=0;
while(计数器<列表长度){
System.out.print(“输入要添加到列表中的编号:”);
int inputListA=Integer.parseInt(reader.nextLine());
如果(找到(列表、输入列表、计数器)){
System.out.println(inputListA+“已添加到数组中,请输入其他数字”);
}否则{
listA[计数器]=输入listA;
计数器++;
}
}
找到公共布尔值(int[]列表、int num、int计数器){
对于(int i=0;我保留一个ArrayList而不是array?非常感谢,这很有效!这正是我想要的,也感谢大家的帮助我从阅读大家提供的所有代码中学到了很多
int counter = 0;
while (counter < listA.length) {
System.out.print("Enter number to add to listA: ");
int inputListA = Integer.parseInt(reader.nextLine());
if (found(listA,inputListA,counter)) {
System.out.println(inputListA + " was already added to the array, enter a different number");
} else {
listA[counter] = inputListA;
counter++;
}
}
public boolean found (int[]list,int num,int counter){
for(int i = 0;i<counter;i++){
if(list[i]==num)
return true;
}
return false;
}