java数组指定位置插入数据问题,急急急!!!!
一字符数组array[],长度为100,前50个元素有效,其中出现一次或者多次字符"</>",请编写java程序对array字符数组进行处理,自动复制"</>",并紧跟其...
一字符数组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 展开
一个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 展开
2个回答
展开全部
/**
* @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;
}
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]+",");
}
实现代码:
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是空的,
其实这个问题就是 在指定的位置插入字符,然后指定位置后面的字符全部向后移动,
是这样一个逻辑思维。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询