我试图一次插入5个数字按升序创建一个数组,但我的第三个数字有问题,等等.测试是插入:
比第一个元素小的数字
比最后一个元素大的数字
第一个和最后一个元素之间的数字
数组中已有的数字
到目前为止,这是我的代码:
import java.util.Scanner;
public class InsertInOrder {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int [] a=new int[5];
int numberofelements=0;
System.out.print("Number to insert: ");
int numtoinsert=input.nextInt();
if (numtoinsert!=0)
{
a[0]=numtoinsert;
++numberofelements;
System.out.print("Array is now: ");
System.out.println(a[0]);
}
while(numberofelements<a.length)
{
System.out.print("Number to insert: ");
numtoinsert=input.nextInt();
if ((numtoinsert<a[numberofelements]) || (numtoinsert==a[numberofelements]))
{
for(int i=0;i<numberofelements;i++)
{
a[i]=a[i+1];
}
}
else
a[numberofelements]=numtoinsert;
numberofelements++;
System.out.print("Array is now: ");
for(int i=0;i<numberofelements;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
}
System.out.print("\nArray is now full");
}
}
我输出的代码:
Number to insert: 5
Array is now: 5
Number to insert: 2
Array is now: 5 2
Number to insert: 7
Array is now: 5 2 7
Number to insert: 4
Array is now: 5 2 7 4
Number to insert: 5
Array is now: 5 2 7 4 5
Array is now full
最佳答案 这一行:
if ((numtoinsert<a[numberofelements]) || (numtoinsert==a[numberofelements]))
检查代码中是否有更大/更小的数字.
尽管如此,每个特定迭代中的numberofelements仍然是常量.
再次尝试循环并遍历数组中的所有当前元素.
祝好运!
编辑:
如下所述,如果数组已排序,则上述初始条件可能实际上有效.然而,排序有点过时了.
这个for循环:
for(int i=0;i<numberofelements;i++)
{
a[i]=a[i+1];
}
应该在数组中移动元素,使其成为有序元素.
但实际上,它只会向后移动所有元素,并删除第一个元素.
尝试将新值添加到数组中的正确位置,而不删除其他值. bubble sort或any other sorting algorithm将成功.