每日小语
最真实的是幕后的东西。最能靠得住的,是你自己,你的主见、原则和实力。——豆豆
思考
在Java中,数组的长度是固定的,一旦创建后就无法改变。如果您需要在数组中插入元素,通常的做法是创建一个新的数组,将原数组的元素复制到新数组中,并在适当的位置插入新元素。
自己敲写
//设有一个包含6个元素的一维数组,将数组元素按从小到大的顺序排序;然后输入一个数,要求按现有的排序规律将它插入到数组中
import java.util.Scanner;
public class InsertAndSort12
{
public static void main(String[] args)
{
int[] array = {10, 20, 30, 40, 50, 60};
Scanner scanner = new Scanner(System.in);
System.out.println("输入一个数:");
String n = scanner.nextLine();
double num = Integer.parseInt(n);//转换数字
//创建新数组,方便插入
int[] newArray = new int[7];
//sort
for(int i = 0;i<6;i++)
{
if(num>array[i])
{
array[i+1]=(int) num;
array[i+2]=array[i+3];
}
}
System.out.println(array);
}
}
很奇怪。。gpt说
在你的代码中,有几个需要修改的地方以实现将输入的数字按照排序规律插入到数组中:
- 当输入一个数字后,需要将该数字插入到原始数组中,并按照从小到大的顺序排序。
- 在将数字插入到数组中时,需要将后续元素依次向后移动,腾出位置给新插入的数字。
- 在输出数组时,应该逐个打印数组中的元素。
//设有一个包含6个元素的一维数组,将数组元素按从小到大的顺序排序;然后输入一个数,要求按现有的排序规律将它插入到数组中 import java.util.Scanner; public class InsertAndSort12 { public static void main(String[] args) { int[] array = {10, 20, 30, 40, 50, 60}; Scanner scanner = new Scanner(System.in); System.out.println("输入一个数:"); String n = scanner.nextLine(); double num = Integer.parseInt(n);//转换数字 //创建新数组,方便插入 int[] newArray = new int[7]; //sort for(int i = 0;i<7;i++) { if(num>=array[i]) { newArray[i+1]=(int) num; array[i]=newArray[i]; array[i+2]=newArray[i+3]; } else { newArray[0]=(int) num; array[i]=newArray[i+1]; } } System.out.println(newArray); } }
还是有问题
-
要用while
终极代码
//设有一个包含6个元素的一维数组,将数组元素按从小到大的顺序排序;然后输入一个数,要求按现有的排序规律将它插入到数组中
import java.util.Scanner;
public class InsertAndSort12
{
public static void main(String[] args)
{
int[] array = {10, 20, 30, 40, 50, 60};
Scanner scanner = new Scanner(System.in);
System.out.println("输入一个数:");
String n = scanner.nextLine();
double num = Integer.parseInt(n);//转换数字
//创建新数组,方便插入
int[] newArray = new int[7];
//sort
int i = 0;
while(i<6&&num>=array[i])
{
newArray[i]=array[i];
i++;
}
newArray[i]=(int) num;
while(i<6&&num<array[i])
{
newArray[i+1]=array[i];
i++;
}
System.out.println("插入排序后的数组为:");
for (int j = 0; j < 7; j++) {
System.out.print(newArray[j] + ",");
}
}
}
撒花花