为啥插入数字会覆盖数字

package 综合案例;
import java.util.Scanner;
public class lainXi {
public int[] xcc() {
int []s=new int[10];
Scanner sc=new Scanner(System.in);
for(int i=0;i<s.length-1;i++) {
s[i]=sc.nextInt();
System.out.print("请输入第"+(i+1)+"个字符");
try{
s[i]=sc.nextInt();
}catch(java.util.InputMismatchException e) {
System.out.println("输入格式有误请输入数字,打二蛋屁股");
sc.next();
i--;
}}for(int n:s)
System.out.println(n);return s;
}
public void jian (int n ,int[] f){
for(int i=0;i<n;i++) {
System.out.println(f[i]+" ");
}System.out.println();
}
public void cha(int[]a,int b,int c) {
for(int i=a.length-1;i>c;i--) {
a[i]=a[i-1];
}a[c]=b;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
lainXi scc=new lainXi();
System.out.println(scc.xcc());
int [] n=scc.xcc();
scc.jian(n.length-1,n);
Scanner sc=new Scanner("请输入要插入数据");
int b=sc.nextInt();
System.out.println("请输入要插入的位置");
int c=sc.nextInt();
scc.cha(n,b,c);
scc.jian(n.length,n);
}
}为啥插入数字会覆盖数字
8
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小黑
2022-08-10 13:36:10
同学你好,是因为同学代码中
for(int i=a.length-1;i>c;i--) {
a[i]=a[i-1];
}
}是将数组中下标为i-1的数据赋值给下标为i的数据,所以下标为i-1的数据会覆盖掉下标为i的数据,当数组未满时将以上代码修改为:
for(int i=a.length-2;i>=c;i--) {
a[i+1]=a[i];
}
a[c]=b;当数组已满时将以上代码修改为:
public int [] cha(int[]a,int b,int c) {
//因为数组中的数据已满,定义一个比数组a的长度大1的数组
int []arr=new int[a.length+1];
//将数组a的数据放入数组arr
for (int i = 0; i < a.length; i++) {
arr[i]=a[i];
}
//将arr数组中的数据从下标c开始往后移动
for(int i=arr.length-2;i>=c;i--) {
arr[i+1]=arr[i];
}
//将数据插入到下标c的位置
arr[c]=b;
return arr;
}祝学习愉快!
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星