我目前的代码有两种方法。我试图让第一个位置切换到第二个位置。例如,一些输入6&我想让它成为7& 6,但在我的情况下,它们是预定义的,并且超过两位数。
我的第一种方法:
static void nameSwitch (int[] array, int pos1, int pos2 ) {
int temp = array[pos1]; /*As you all may know, this is the switching of
array[pos1] = array[pos2]; position 1 and 2.*/
array[pos2] = temp;
}
我的第二种方法:
static void lastToFirstName() {
int [] values = {1,2,3,4,5,6,7,8,9,10};
for(//this is where I am stuck at.)
System.out.println(Arrays.toString[values]);
}
我想输出为[21436587109],我的问题是在其他方法中实现该方法并使循环正确。
答案 0 :(得分:2)
因此,在我看来,您正在values
中切换其他所有字词。
原始输入:
int[] values = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
这可以在for
循环结构中完成,该循环的结构类似于“跳转”到其他每个术语并相应地执行切换操作:
for (int i = 0; i < values.length; i += 2) {
nameSwitch(values, i, i + 1);
}
最终输出:
values = {2, 1, 4, 3, 6, 5, 8, 7, 10, 9};
修改:将比较功能添加到nameSwitch()
方法
您可以修改nameSwitch()
以考虑哪个数字更大;如果pos1
大于pos2
,则会进行切换。否则,pos1
小于pos2
,并且会立即返回该方法。
static void nameSwitch(int[] array, int pos1, int pos2) {
if (pos1 < pos2) {
return;
}
int temp = array[pos1];
array[pos1] = array[pos2];
array[pos2] = temp;
}
答案 1 :(得分:1)
如果我理解您的问题,此代码将有效
static void nameSwitch (int[] array, int pos1, int pos2 ) {
int temp = array[pos1]; /*As you all may know, this is the switching of position 1 and 2.*/
array[pos1] = array[pos2];
array[pos2] = temp;
}
public static void main(String[] args) {
int [] values = {1,2,3,4,5,6,7,8,9,10};
int i;
for(i = 0; i < values.length; i+=2) {
nameSwitch(values, i, i+1);
}
System.out.println(Arrays.toString(values));
}
答案 2 :(得分:1)
试试这个,
for(int i=0;i+1<values.length;i=i+2)
{
nameSwitch(values, i, i+1);
}
哟需要在每次迭代中将i递增2,以便下一对数字可以相互交换。 i+1<values.length
将确保如果您在上一次迭代中只剩下一个元素,那么它将保持不变。
答案 3 :(得分:0)
public class Switchnumbers {
public static void main(String[] args) {
lastToFirstName();
}
static void lastToFirstName() {
int[] values = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for (int i = 0; i < values.length; i = i + 2) {
int tmp = values[i];
values[i] = values[i + 1];
values[i + 1] = tmp;
}
for (int i = 0; i < values.length; i++) {
System.out.println(values[i]);
}
}
}