用于在两列中打印数组值的循环

时间:2016-11-30 16:44:07

标签: java arrays loops foreach

我一直在尝试制作以下for循环,以在两列中打印数组的原始值和修改值,以\t\t分隔。这是我的代码:

public class Main {

    public static void main(String[] args) {        

        int jay[] = {1,2,3,4,5,6};
        System.out.println("Original\tAfter");

        for(int y: jay) {
            System.out.println(y);
        }

        multiplyByTen(jay);

        for(int z: jay) {
            System.out.println("\t"+ z);
        }

    }

    public static void multiplyByTen(int x[]) {
        for(int counter = 0; counter<x.length;counter++) {
            x[counter] *= 10;
        }
    }
}

这是迄今为止的结果:

Original    After
1
2
3
4
5
6
            10
            20
            30
            40
            50
            60

所以我的问题是如何将值10对1和20对2等对齐?

5 个答案:

答案 0 :(得分:1)

保持简单。

为什么不简单地做

for(int y : jay) {
    System.out.println(y + "\t" + y*10);
}

答案 1 :(得分:1)

这是你的问题的解决方案,但我不知道这是不是你想要的,但它会给你希望的结果

public class Main {

public static void main(String[] args){     

    int jay[] = {1,2,3,4,5,6};
    int jay2[] = jay.clone();


    multiplyByTen(jay);
    for(int i = 0; i < jay.length;i++) {
        System.out.println(jay2[i]"\t"+ jay[i]);
    }

 }
public static void multiplyByTen(int x[]){
    for(int counter = 0; counter<x.length;counter++) {
        x[counter] *= 10;
    }
}
}

答案 2 :(得分:1)

  

这个例子来自于newboston java系列,我刚修改了一下,看看我是否可以并排打印原文和数组。

没有办法将它与当前构造并排打印,因为数组在传递给方法时会被操纵和更改。其中一种方法是制作原件的副本,并在同一行中同时打印originalafter

如果您的multiplyByTen方法接受单个int值,则可以执行以下操作:

for(int y : jay)
    System.out.println(y + "\t" + mutiplyByTen(y));

如果您的multiplyByTen方法返回int数组,则可以执行以下操作:

int[] arr = mutiplyByTen(jay);
for(int x=0; x<jay.length; x++)
        System.out.println(jay[x] + "\t" + arr[x]);

但是使用当前的方法签名,您需要制作原始数组的另一个副本。

答案 3 :(得分:1)

我使用单个阵列的解决方案:

public class Main
{
  public static void main(String[] args)
  {
    int jay[] = { 1, 2, 3, 4, 5, 6 };
    System.out.println("Original\tAfter");
    multiplyByTen(jay);

    // To verify values in the original array (you can remove this loop)
    for (int z : jay)
    {
      System.out.println(z);
    }
  }

  public static void multiplyByTen(int x[])
  {
    for (int counter = 0; counter < x.length; counter++)
    {
      System.out.print(x[counter] + "\t\t");
      x[counter] *= 10;
      System.out.println(x[counter]);
    }
  }
}

<强>输出

Original    After
1           10
2           20
3           30
4           40
5           50
6           60

如果要在multiplyByTen(int x[])方法中使用增强型循环,则只会更改本地值而不是数组中的值。因此,如果要打印出原始数组中的值,它们将保持原始数组的相同值。这样,数组中的值将被永久修改。因此,在方法之后打印值将显示相乘的值。

最后,我不会使用print()println()方法。我会使用printf()打印出格式化的输出。你会发现tabbing最终会导致列不对齐(当数字变大时)。使用printf()时,您不会遇到此问题。

答案 4 :(得分:-1)

当您考虑使用Arrays.copyOf(...) 1 时,最好使用.clone()

int jay[] = {1,2,3,4,5,6};
int jay2[] = Arrays.copyOf(jay,jay.length);
System.out.println("Original\tAfter");
multiplyByTen(jay2);
for (int i = 0; i < jay.length; i++) {
    System.out.println(jay[i]+"\t\t"+jay2[i]);
}

这样,您可以打印表格行而不是列。

1 Why you should never use .clone() for defensive copying.