Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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_Arrays_Loops_Foreach - Fatal编程技术网

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

Java 用于在两列中打印数组值的循环,java,arrays,loops,foreach,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) { S

我一直在尝试使用以下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;
        }
    }
}
因此,我的问题是如何将值10与1、20与2对齐,以此类推?

使用数组要好得多。。。当您考虑使用.clone1时:

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

1保持简单

为什么不干脆做呢

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

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

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;
    }
}
}

这个例子来自NewBoston java系列,我只是对它做了一些修改,看看是否可以并排打印原始数组和after数组

无法将其与当前构造并排打印,因为数组在传递到方法中时会被操纵和更改。唯一的方法之一是复制原稿,并在同一行中打印原稿和之后的内容

如果multiplyByTen方法接受单个int值,则可以按以下方式执行:

for(int y : jay)
    System.out.println(y + "\t" + mutiplyByTen(y));
int[] arr = mutiplyByTen(jay);
for(int x=0; x<jay.length; x++)
        System.out.println(jay[x] + "\t" + arr[x]);
如果您的multilybyten方法返回一个int数组,则可以按以下方式执行:

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

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

使用单个数组的我的解决方案:

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]);
    }
  }
}
如果要在multilybytnit x[]方法中使用增强循环,则只需更改局部值,而不更改数组中的值。因此,如果要打印出原始数组中的值,它们将保持与原始数组相同。这样,数组中的值将被永久修改。因此,在方法之后打印值将显示乘以的值


最后,我不会为此使用print或println方法。我将使用printf打印出格式化的输出。您会发现,当位数变大时,制表符最终会导致列未对齐。使用printf时不会遇到此问题。

为什么不简单地使用System.out.printlny+\t+10*y;?不需要那个方法,也不需要循环两次。你的函数multiplyByTen是我不会使用的。它更改参数而不返回任何内容。我将对其进行更改,使其返回一个新数组,其中包含原始数组乘以10的结果。通过这种方式,您可以使用下面的任何答案,使用制表符打印两列。此示例来自NewBoston java系列,我只是对其进行了一些修改,以查看是否可以并排打印原始数组和after数组。也许他在练习方法调用?OP是在问有关打印数组的问题,而不是乘法表。谢谢。我将缺少的+添加到您的代码中,按预期工作有一种方法。我提供了一个确切的答案。你只需要在同一个循环中进行打印。昨天我写了一个类似的答案,但我在中途删除了它,因为OP只是通过调整方法签名来试验自己的设计。我之所以删除了一个与你的答案类似的答案,是因为根据设计,我们甚至不应该用一种只应该进行乘法的方法进行打印。这鼓励了紧密耦合和低内聚。方法一次只能执行特定的任务。因此,我没有写这篇文章,而是提出了其他方法签名的备选方案。@user3437460这是真的。根本不应该进行打印。这通常是为了让学习者能够直观地检查结果。您可以将System.out.print替换为logging,它应该完全正常。我不打算发布答案,但我这么做是因为绝对没有理由使用两个数组。答案应该只使用一个数组,1保持不变,只打印每个索引x10的值,或2乘以当前值x10,并将结果存储在同一索引中。无论哪种情况,使用两个数组都是错误的答案。
Original    After
1           10
2           20
3           30
4           40
5           50
6           60