java数组指定位置插入数据问题,急急急!!!!

一字符数组array[],长度为100,前50个元素有效,其中出现一次或者多次字符"</>",请编写java程序对array字符数组进行处理,自动复制"</>",并紧跟其后插入"</>",如:"</>"变成"</></>"。

一个char[100] 类型的数组, 里面前50个数据类似这样{'<','/','>','2','g','<','/','>','f','a'},要求找到"</>" 在其后添加相同的"</>",在线等大神回复。
char[] array = new char[100];
array[0] = '<';
array[1] = '/';
array[2] = '>';
array[3] = '2';
array[4] = 'a';
array[5] = '<';
array[6] = '/';
array[7] = '>';
array[8] = '1';
array[9] = 'k';

for (int i = array.length - 1; i > 0; i--) {
if ('>' == array[i]) {
array[i + 4] = array[i + 1];
array[i + 5] = array[i + 2];
array[i + 6] = array[i + 3];
array[i + 1] = '<';
array[i + 2] = '/';
array[i + 3] = '>';
}
}

}
我这样做输出的结果是 :< / > < / > 2 a < / > 1 k
我想要的效果是:< / > < / > 2 a < / > < / >1 k

/**
   * @param a
   * @return 处理后的有效元素个数。
   */
  public static int process(char[] a) {
    int j = a.length - 1;
    for (int i = a.length / 2 - 1; i >= 0; i--) {
      a[j--] = a[i];
      if (a[i] == '<' && i <= a.length / 2 - 1 - 2 && a[i + 1] == '/'
          && a[i + 2] == '>') {
        a[j--] = '>';
        a[j--] = '/';
        a[j--] = '<';
      }
    }
    j++;
    int i = 0;
    for (; j < a.length; j++) {
      a[i++] = a[j];
    }
    return i;
  }

追问

好像不是我想要的结果,不过谢谢您了,我刚刚调试了下,
if (a[i] == '') {

}
这个if结构没有进去 会不会是条件出错了?

追答

先看下最终结果对不对。

如果需要的话可以在最后加上把超出有效元素部分清零的代码。

  /**
   * @param a
   * @return 处理后的有效元素个数。
   */
  public static int process(char[] a) {
    int j = a.length - 1;
    for (int i = a.length / 2 - 1; i >= 0; i--) {
      a[j--] = a[i];
      if (a[i] == '<' && i <= a.length / 2 - 1 - 2 && a[i + 1] == '/'
          && a[i + 2] == '>') {
        a[j--] = '>';
        a[j--] = '/';
        a[j--] = '<';
      }
    }
    j++;
    int i = 0;
    for (; j < a.length; j++) {
      a[i++] = a[j];
    }
    for (int k = i; k < a.length; k++) {
      a[k] = 0;
    }
    return i;
  }

追问

数组长度100,最终结果是50
if (a[i] == '') {
}
调试得知: 这个if依然没有进去
总共10条数据,有2个特殊字符,所以需要插入6个元素,最终结果应该是16吧?

追答

当没有满足 if 条件时不会进去。多运行几步,满足条件就会进去了。你题目里的例子处理后是 16 个字符。

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-08-05
JAVA里向一个已经满的数组插入数据可以使用Arrays.copyOf方法实现。
实现代码:
int[] arr=new int[]{1,2,3,4,5};
arr=Arrays.copyOf(arr, arr.length+1);//数组扩容
arr[arr.length-1]=6; //插入数据
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+",");
}追问

没有满,数组为100 ,前50有效, 说明后面还有50是空的,
其实这个问题就是 在指定的位置插入字符,然后指定位置后面的字符全部向后移动,
是这样一个逻辑思维。

java编写程序,向整数数组的指定位置插入元素,并输出插入前后数组的值怎...
System.out.print("\\n请输入要插入的位置:");int index =input.nextInt();System.out.print("请输入要插入的整数:");int value = input.nextInt();insert.insertArray(arr, index, value);} Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。Jav...

java数组中插入数字
for(int i=0;i<5;i++){ if(x<=s[i]&&x>s[i+1]){ \/\/x是你要插入的数字,s[]是现有的数组 for(int j=5-i;j>0;j++){ \/\/ 如果上面的条件成立,那么重置插入位置以后的数组 s[j] = s[j-1];} s[i+1]=x; \/\/插入该数字 break; \/\/跳出循环 } } 说明:如...

怎么向JAVA数组中插入元素,本人初学者,总是不明白,搞不懂,哪位大神帮忙...
int [] a = new int[5]; \/\/ 声明一个int数组a,并且长度为5 \/\/ 一个一个的向数组中插入数据,注意数组下标是从0开始数的 a[0] = 1;a[1] = 1;a[2] = 1;a[3] = 1;a[4] = 1;

Java初学者问题,请教前辈谢谢(向数组中插入元素)
好吧!你的代码是要将自己输入的歌名插入自己定义的String[]musics数组中!这里你通过比较歌名的字母(忽略大小写)的大小来将这个歌名插入到指定的位置!所以你要完成成这个功能那么代码中的index只能为musics.length,否则你插入到String[]musics数组中个名将不会按字母的大小顺序插入到newmusics 数组中...

JAVA 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入...
\/ \/\/\/: Filename: Insert.java public class Insert { public static void main(String[] args) { int[] i = {5,6,7,44,55,89,};\/\/原来的数组 int x = 24;\/\/要插入的数据 System.out.print("插入前数据: ");print(i);i=insert(i,x);System.out.print("插入["+x+"]后数据...

java数组如何添加数据?
\/\/赋值到i位置 arr1[i+1] = l;return arr1;} \/\/测试 public static void main(String[] args){ long[] arr = {12,25,11,36,14};long[] arr1 = insert(arr, 2, 100);for (long l : arr1) { System.out.print(l+" ");} } 数组的扩容方式:arr = Arrays.copyOf(arr, ...

JAVA一个已经排好序的数组(元素为10个),插入一个数按照原来的排序...
1、数组插入新数据,首先需要扩容,java中数组需要使用数组的扩容方式:arr = Arrays.copyOf(arr, arr.length+1);或者,\/\/已有 int [] num ;num = new int[num.length+1];重新定义数组,之后按顺序遍历插入,或者插入以后再排序也是可以的。

怎样访问数组中某个位置的元素需要注意什么当访问的位置实际不存在时Ja...
在Java中,可以使用数组下标来访问数组中的元素。如果要访问数组中某个位置的元素,需要指定数组的名称和元素的下标,下标从0开始,以数组长度-1为最大值。例如,如果有一个整数类型的数组arr,可以使用下标访问第i个元素:arr[i]。在访问数组元素时,需要注意以下几点:下标不能越界。如果访问的位置超出...

Java往数组中插入新元素
往数组中添加数据有如下几种方式:1,int[] a={1,2,3,4,5};\/\/已知数组内容 2,int[] b = new int[]{1,2,3,4,5};3,int[] c=new int[5];for(int i=1;i<=5;i++){ c[i]=i;} 希望能帮到你

java中向string数组添加某项得问题
你自己看看把两条线中间的代码拿到窗体里去改改就行了,也可以变长。import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.DefaultComboBoxModel;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;public class LabelTest extends...

相似回答