Java 使用if和while接受数组中的元素
我写了一个程序,它有一个由4个元素组成的数组,并且只接受从1到4(1,2,3, 4) 每次我提示用户输入(仅1,2,3,4),每次我检查数组是否已经有此输入时。。。如果有此元素,则用户必须提供另一个数字,如果没有,则将该元素存储在数组中 这是我的密码:-Java 使用if和while接受数组中的元素,java,arrays,if-statement,while-loop,Java,Arrays,If Statement,While Loop,我写了一个程序,它有一个由4个元素组成的数组,并且只接受从1到4(1,2,3, 4) 每次我提示用户输入(仅1,2,3,4),每次我检查数组是否已经有此输入时。。。如果有此元素,则用户必须提供另一个数字,如果没有,则将该元素存储在数组中 这是我的密码:- import java.util.*; public class Arr{ public static void main(String[] args){ int[] arr = new int[4];
import java.util.*;
public class Arr{
public static void main(String[] args){
int[] arr = new int[4];
Scanner sc = new Scanner(System.in);
int number;
while(arr.length < 5){
System.out.print("Enter a number from 1-4 : ");
number = sc.nextInt();
if(number <= 0 || number > 4){
System.out.print("Rejected ! Please re-enter a number from 1-4 : ");
}
else{
for(int j = 0 ; j < arr.length ; j++){
if(number == arr[j]){
System.out.print("Already exists .. enter new number from 1-4 : ");
number = sc.nextInt();
}
else{
arr[j]=number;
break;
}
}
}
}
}
}
import java.util.*;
公共类Arr{
公共静态void main(字符串[]args){
int[]arr=新的int[4];
扫描仪sc=新的扫描仪(System.in);
整数;
而(arr.length<5){
System.out.print(“输入1-4之间的数字:”);
编号=sc.nextInt();
如果(4号){
System.out.print(“拒绝!请重新输入1-4:”)中的数字;
}
否则{
对于(int j=0;j
但是逻辑上有点不对劲,我想不出来帮助?在这种情况下,一组输入的数字更符合逻辑
Set<Integer> inputs = new HashSet<>();
Scanner sc = new Scanner(System.in);
while(inputs.size() < 5) {
Integer number = sc.nextInt();
if(number <= 0 || number > 4) {
// rejected
}
if(inputs.contains(number)) {
// rejected
}
inputs.add(number);
}
Set inputs=new HashSet();
扫描仪sc=新的扫描仪(System.in);
while(inputs.size()<5){
整数=sc.nextInt();
如果(4号){
//拒绝
}
if(输入。包含(编号)){
//拒绝
}
输入。添加(编号);
}
在这种情况下,一组输入的数字更符合逻辑
Set<Integer> inputs = new HashSet<>();
Scanner sc = new Scanner(System.in);
while(inputs.size() < 5) {
Integer number = sc.nextInt();
if(number <= 0 || number > 4) {
// rejected
}
if(inputs.contains(number)) {
// rejected
}
inputs.add(number);
}
Set inputs=new HashSet();
扫描仪sc=新的扫描仪(System.in);
while(inputs.size()<5){
整数=sc.nextInt();
如果(4号){
//拒绝
}
if(输入。包含(编号)){
//拒绝
}
输入。添加(编号);
}
我发现至少有两个问题:
while(arr.length < 5)
while(arr.length<5)
arr.length
是4,4总是小于5arr[j]=number代码>一旦发现数组中有一个元素与输入的数字不同。那是错误的。只有当所有数字都与输入的数字不同时,才能分配该数字。而且,我猜,你必须把它存储在第一个还没有包含数字的位置
我建议您将问题分成几个最简单的部分,作为方法实现。例如,您可能有一个方法
isnumberreadyinarray()
我发现至少有两个问题:
while(arr.length < 5)
while(arr.length<5)
arr.length
是4,4总是小于5arr[j]=number代码>一旦发现数组中有一个元素与输入的数字不同。那是错误的。只有当所有数字都与输入的数字不同时,才能分配该数字。而且,我猜,你必须把它存储在第一个还没有包含数字的位置
isnumberReadyInArray()
您应该使用while
或do while
循环来重复提示,直到用户输入正确的输入
arr[j]=number;
这将把第一个不匹配的数组元素设置为输入编号。我肯定那不是你想要的
如果您是初学者,最好写一份程序如何运行的计划:
请用户输入。如果在1到4之间,请检查输入。
重复询问用户,直到提供有效输入。
在有效输入上,检查数组是否已存在输入。
如果是,请提醒用户并再次请求输入。
如果否,则将输入存储在阵列中的下一个可用插槽中 然后用它构建一个伪代码。例如:
have counter to track position in array (initialize to 0)
do
get input
if input >= 1 and input <= 4
loop: go through array from 0 to counter
if element at array = input
alert user
break loop
else if element at array is < 1 or > 4
set element as input
increment counter
break loop
while input < 1 or input > 4 or counter < array length
让计数器跟踪数组中的位置(初始化为0)
做
获取输入
如果输入>=1,输入4
将元素设置为输入
增量计数器
断环
当输入<1或输入>4或计数器<数组长度时
最后使用伪代码编写程序
您应该使用while
或do while
循环来重复提示,直到用户输入正确的输入
arr[j]=number;
这将把第一个不匹配的数组元素设置为输入编号。我肯定那不是你想要的
如果您是初学者,最好写一份程序如何运行的计划:
请用户输入。如果在1到4之间,请检查输入。
重复询问用户,直到提供有效输入。
在有效输入上,检查数组是否已存在输入。
如果是,请提醒用户并再次请求输入。
如果否,则将输入存储在阵列中的下一个可用插槽中 然后用它构建一个伪代码。例如:
have counter to track position in array (initialize to 0)
do
get input
if input >= 1 and input <= 4
loop: go through array from 0 to counter
if element at array = input
alert user
break loop
else if element at array is < 1 or > 4
set element as input
increment counter
break loop
while input < 1 or input > 4 or counter < array length
让计数器跟踪数组中的位置(初始化为0)
做
获取输入
如果输入>=1,输入4
将元素设置为输入
增量计数器
断环
当输入<1或输入>4或计数器<数组长度时
最后使用伪代码编写程序。有多种错误:
arr.length
不会更改,因为数组具有固定长度,您需要计算有效输入。此外,在出现“已存在”错误后,您希望进入下一个循环迭代,而不是读取另一个数字。有多个错误:arr.length
不会更改,因为ar