java数组操作
我是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
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;
}
}