编写程序。向整形数组的指定位置插入元素,并输出插入前后数组的值。我写了好多次,不能让数组位置后移一位package cn.puruidong.accp_14;/**
* @author PuRuidong
*
*/
import java.util.Scanner;
public class Fivenum { /**
* @param args
*/
private int num [] = new int[] {10,20,30,55,99};//原数组
private int no [] = new int [num.length+1];//新数组
private static Scanner sc = new Scanner (System.in);
private static int index ;//录入想插入的位置
private static int value ;//录入想插入的值
public void show (int index ,int value){ ////这里面的int index,和int value是什么含义?我迷糊了
////////////输出插入前的数组
System.out.println("插入前的数组:");
for (int i=0;i<num.length;i++){//输出插入前的数组
System.out.print(num[i]+" ");
}
/////赋值数组
for (int c=0;c<num.length;c++){
no[c] = num[c];
}
System.out.println();
System.out.println("请输入想插入的位置(0~5):");
index = sc.nextInt(); //录入想插入的位置
System.out.println("请输入想插入的数值:");
value = sc.nextInt(); //录入想插入的值
for (int j=no.length-1;j>index;j++){ ////元素后移,就是这出问题了
no[j] = no[j-1];
}
no[index] = value; //将 value的值放在index位置
System.out.println("插入后的数组:");
/////输出插入后的数组
for (int k=0;k<no.length;k++){
System.out.println(no[k]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Fivenum center = new Fivenum ();
center.show(index, value); }}
* @author PuRuidong
*
*/
import java.util.Scanner;
public class Fivenum { /**
* @param args
*/
private int num [] = new int[] {10,20,30,55,99};//原数组
private int no [] = new int [num.length+1];//新数组
private static Scanner sc = new Scanner (System.in);
private static int index ;//录入想插入的位置
private static int value ;//录入想插入的值
public void show (int index ,int value){ ////这里面的int index,和int value是什么含义?我迷糊了
////////////输出插入前的数组
System.out.println("插入前的数组:");
for (int i=0;i<num.length;i++){//输出插入前的数组
System.out.print(num[i]+" ");
}
/////赋值数组
for (int c=0;c<num.length;c++){
no[c] = num[c];
}
System.out.println();
System.out.println("请输入想插入的位置(0~5):");
index = sc.nextInt(); //录入想插入的位置
System.out.println("请输入想插入的数值:");
value = sc.nextInt(); //录入想插入的值
for (int j=no.length-1;j>index;j++){ ////元素后移,就是这出问题了
no[j] = no[j-1];
}
no[index] = value; //将 value的值放在index位置
System.out.println("插入后的数组:");
/////输出插入后的数组
for (int k=0;k<no.length;k++){
System.out.println(no[k]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Fivenum center = new Fivenum ();
center.show(index, value); }}
解决方案 »
- 三目运算问题,请大虾帮忙
- 怎样用StringBuffer将一个短文中的原单词全部替换为新单词?
- java编写服务器传送图片问题
- 关于滚动栏的问题,本人是新手,大侠们帮帮忙啊!!!!!!!!!!!急啊!!!!!!!!!!!!!!!!!!!
- Applet的在98中的运行问题
- 有没有办法让JComboBox中的某一选项变灰,不让用户去选?
- 如何对邮件进行统计
- 有关传值的问题
- 请问?哪里能够找到JAVA反编译器和JAVA制作的360度全景展示代码
- eclipse打不开什么原因啊
- 抛ConcurrentModificationException原因的深究以及解决方案 (原创,申请推荐)
- 帮我看看这段代码的意思
no[j] = no[j-1];
}还有一个问题,进行循环之前,最好判断下index的值,防止溢出。
import java.util.Scanner;public class Fivenum {
private int num[] = new int[] { 10, 20, 30, 55, 99 };// 原数组
private int no[] = null;// 新数组 public Fivenum(int... data) {
if (data != null && data.length != 0) {
this.num = data;
}
no = new int[num.length + 1]; } public void show() {
// //////////输出插入前的数组
Scanner sc = new Scanner(System.in);
System.out.println("插入前的数组:");
for (int i = 0; i < num.length; i++) {// 输出插入前的数组
System.out.print(num[i] + " ");
}
// ///赋值数组
for (int c = 0; c < num.length; c++) {
no[c] = num[c];
}
System.out.println();
System.out.println("请输入想插入的位置(0~5):");
int index = sc.nextInt(); // 录入想插入的位置
System.out.println("请输入想插入的数值:");
int value = sc.nextInt(); // 录入想插入的值
for (int j = num.length; j > index; j--) { // //元素后移,就是这出问题了
no[j] = no[j - 1];
}
no[index] = value; // 将 value的值放在index位置
System.out.println("插入后的数组:");
// ///输出插入后的数组
for (int k = 0; k < no.length; k++) {
System.out.println(no[k]);
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
Fivenum center = new Fivenum();
// Fivenum center = new Fivenum(new int[]{ 10, 20, 30, 55,60, 99 });
center.show(); }}
首先你为什么要用数组插入,什么需求?数组的插入性能很低,整体后移,不建议这么用,如果你是学习,那就没什么说的了,但是实际中很少这么用,你可以去研究下集合,看看那个更适合你,会事半功倍的。个人技术博客 : http://www.happyalaric.com
no[j] = no[j-1];
}
这个元素后移有问题吧
应该是for (int j=no.length-1;j>index;j--){ no[j] = no[j-1];
}
这样子才可以达到后移的作用啊..然后再no[index] = value; 就可以了....
public static void main(String args[]){
int i2[]=new int[]{0,1,2,3,4,5,};
int i[]=new int[i2.length+1];
Random R=new Random();
int index=R.nextInt(i.length-1);
System.out.println("数组的插入位置是i["+index+"]");
int value=R.nextInt(10);
System.out.println("value的值是:"+value);
for(int j=0;j<i2.length;j++)
{
i[j]=i2[j];
System.out.print(i[j]+" ");
}
System.out.println();
for (int j=i.length-1;j>index;j--){ ////元素后移,就是这出问题了
i[j] = i[j-1];
}
i[index]=value;
for(int k=0;k<i.length;k++)
{
System.out.print(i[k]+" ");
}
} }
希望对楼主有用。。
import java.util.Scanner;
public class Fivenum { /**
* @param args
*/
private int num [] = new int[] {10,20,30,55,99};//原数组
private int no [] = new int [num.length+1];//新数组
private static Scanner sc = new Scanner (System.in);
private static int index ;//录入想插入的位置
private static int value ;//录入想插入的值
public void show (int index ,int value){ ////这里面的int index,和int value是什么含义?我迷糊了
////////////输出插入前的数组
System.out.println("插入前的数组:");
for (int i=0;i<num.length;i++){//输出插入前的数组
System.out.print(num[i]+" ");
}
/////赋值数组
for (int c=0;c<num.length;c++){
no[c] = num[c];
}
System.out.println();
System.out.println("请输入想插入的位置(0~5):");
index = sc.nextInt(); //录入想插入的位置
System.out.println("请输入想插入的数值:");
value = sc.nextInt(); //录入想插入的值
for (int j=no.length-1;j>index;j--){ ////元素后移,就是这出问题了
System.out.println(j);
no[j] = no[j-1];
}
no[index] = value; //将 value的值放在index位置
System.out.println("插入后的数组:");
/////输出插入后的数组
for (int k=0;k<no.length;k++)
System.out.print(no[k]+" ");
System.out.println();
}
public static void main(String[] args) {
Fivenum center = new Fivenum ();
center.show(index, value); }}
public class Test { /**
* @param args
*/
public static void main(String []args)
{
Test a=new Test();
a.show();
}
private int num [] = new int[] {10,20,30,55,99};//原数组
private int no [] = new int [num.length+1];//新数组
private static Scanner sc = new Scanner (System.in);
public void show (){ ////这里面的int index,和int value是什么含义?我迷糊了
////////////输出插入前的数组
System.out.println("插入前的数组:");
for (int i=0;i<num.length;i++){//输出插入前的数组
System.out.print(num[i]+" ");
}
/////赋值数组
System.out.println();
System.out.println("请输入想插入的位置(0~5):");
int index = sc.nextInt()-1; //录入想插入的位置
System.out.println("请输入想插入的数值:");
int value = sc.nextInt(); //录入想插入的值
for (int c=0;c<index;c++){
no[c] = num[c];
}
no[index]=value;
for (int j=num.length;j>index;j--){ ////元素后移,就是这出问题了
no[j] = num[j-1];
}
System.out.println("插入后的数组:");
/////输出插入后的数组
for (int k=0;k<no.length;k++){
System.out.println(no[k]);
}
}
}
防止溢出的我就不加了