Java 用于在两列中打印数组值的循环
我一直在尝试使用以下for循环将数组的原始值和修改值打印在两列中,两列之间用\t\t分隔。这是我的密码: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
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