我一直在尝试制作以下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等对齐?
答案 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系列,我刚修改了一下,看看我是否可以并排打印原文和数组。
没有办法将它与当前构造并排打印,因为数组在传递给方法时会被操纵和更改。其中一种方法是制作原件的副本,并在同一行中同时打印original
和after
。
如果您的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]);
}
这样,您可以打印表格行而不是列。