Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java数组操作_Java - Fatal编程技术网

java数组操作

java数组操作,java,Java,我是java的初学者。我想要小程序的逻辑 我有两个数组 array = {a1,a2,a3,a4,a5,,,,,,,,,an} 及 我想要字符串a1b1,a2a3b2b3,A4A5A6B4BB6,。。。。如此类推,直到n 请告诉我逻辑是什么。使用for循环和实例 String getHomework(int[] array, int[] array2){ final int n = array.length; //assumes len array 1== len array2

我是java的初学者。我想要小程序的逻辑

我有两个数组

array = {a1,a2,a3,a4,a5,,,,,,,,,an}

我想要字符串a1b1,a2a3b2b3,A4A5A6B4BB6,。。。。如此类推,直到n

请告诉我逻辑是什么。

使用for循环和实例

String getHomework(int[] array, int[] array2){
    final int n = array.length; //assumes len array 1== len array2
    StringBuilder builder = new StringBuilder();

    for (int i=0;i<n-1;i++){
       builder.append(array[i]);
       builder.append(array2[i]);
       builder.append(",");
    }

    builder.append(array[n-1]);
    builder.append(array2[n-1]);

    return builder.toString();
String获取作业(int[]array,int[]array2){
final int n=array.length;//假设len数组1==len数组2
StringBuilder=新的StringBuilder();

for(int i=0;i您需要一个嵌套的for循环。您一次从
arr1
arr2
添加
span
元素,其中
span
从1增加。此代码仅在
N
为a时有效;否则最后一个元素将是“不完整”的,到现在为止,此代码不处理它(并将抛出
ArrayIndexOutOfBoundsException

您应该了解嵌套循环结构是如何工作的。再次注意,即使
N=8
(这不是一个三角形数字),循环实际上也会打印10个数字(这是一个三角形数字)。您可以先处理此代码段,尝试对其进行修改,使其仅打印
N
数字,而不管它是否为三角形数字,然后将相同的技术应用于原始问题

您还可以处理此代码段,在每行
span
之前打印,比如说,
“next!”
,第一行除外。这与在原始问题中包含逗号的逻辑相同

祝你好运!

这会有用的

int length = 1;
for (int start = 0; start < n; start += length, length++;) {
   build(builder, a1, start, length);
   build(builder, a2, start, length);
   if (start + length < n) {
       builder.append(",");
   }
}

像这样的东西应该能用…但还没有测试过

arr1 = {a11, a12, ..., a1n};
arr2 = {a21, a22, ..., a2n};

StringBuilder builder = new StringBuilder();

int index = 0;
for (int i = 1; true; i++) {
    for (int j = 0; j < i; j++) {
        builder.append("" + arr1[index + j]);
    }
    for (int j = 0; j < i; j++) {
        builder.append("" + arr2[index++]);
    }
    if (index < n - 1) {
        builder.append(",");
    } else {
        break;
    }
}
arr1={a11,a12,…,a1n};
arr2={a21,a22,…,a2n};
StringBuilder=新的StringBuilder();
int指数=0;
for(int i=1;true;i++){
对于(int j=0;j
请尽量澄清你的问题,并说得更具体一些。你将如何用铅笔和纸来做这件事?你有什么算法?你想让我们为你做这个程序,还是你在这里遇到了特定的Java语法问题?他说他是一个Java初学者(更像是一个初学者程序员),不过,你们大多数人还是向他介绍了StringBuilder/Buffer:)。我想问题的作者现在一定有点糊涂了。@Andrei:我试图在我的回答中提到这一部分。我很乐意接受你可能提出的任何其他建议。你为什么不接受fastcodejava给出的答案?@saching:但你真的希望字符串是a1b1、a2a3b2b3、A4A5A6B4BB6……等等,直到n为止?;)@M.Joanis:是的,刚刚注意到;现在修复。使用一种方法可以简化答案:其中i是每个数组在迭代中要打印的元素数。index是数组中要打印的元素的实际索引。j只是循环i次。我将
end
重命名为
length
,您应该只提供
“在这一点上构建
。@Polygene润滑剂:很好的建议,已修复。方法
构建应该很容易编写。如果很容易,那么就去做,包括最后一个逗号删除部分。这是一个很好的答案,我会在完成后投票。不需要
”“+
因为StringBuilder对任何原语都有append方法,所以
sb.append(a[i])
工作起来更简单。
int start = 0;
int N = 8;
int span = 1;
while (start < N) {
   System.out.println("span = " + span);
   for (int i = 0; i < span; i++) {
      System.out.println(start + i);
   }
   start += span;
   span++;
}
span = 1
0
span = 2
1
2
span = 3
3
4
5
span = 4
6
7
8
9
int length = 1;
for (int start = 0; start < n; start += length, length++;) {
   build(builder, a1, start, length);
   build(builder, a2, start, length);
   if (start + length < n) {
       builder.append(",");
   }
}
private void build(StringBuilder sb, int[] a, int start, int length) {
    for (int i = start; i < length && i < a.length - start; i++;) {
        sb.append(a[i]);
    }
}
arr1 = {a11, a12, ..., a1n};
arr2 = {a21, a22, ..., a2n};

StringBuilder builder = new StringBuilder();

int index = 0;
for (int i = 1; true; i++) {
    for (int j = 0; j < i; j++) {
        builder.append("" + arr1[index + j]);
    }
    for (int j = 0; j < i; j++) {
        builder.append("" + arr2[index++]);
    }
    if (index < n - 1) {
        builder.append(",");
    } else {
        break;
    }
}