打印数组时,我在获取正确的输出时遇到了一些麻烦。本质上,我想做的是在main方法中设置一个数组,然后将该数组发送到另一个将打印出如下内容的方法:
89 12 33 7 72 42 76 49
69 85 61 23
它在右边3个空格,并在第8个数字之后开始新的打印行。似乎很容易,但是我却得到了类似的东西。
89
69 85 61 23
由于某种原因,它不会打印出位置1和7之间的值。这就是我所拥有的。
public class Test
{
public static void main (String [] args)
{
int [] myInches = {89,12,33,7,72,42,76,49,69,85,61,23};
printArrayValues(myInches);
}
public static void printArrayValues(int [] myInchesParam) {
for (int i = 0; i < 8; i++) {
System.out.print(" " + myInchesParam[i]);
System.out.println();
for (i = 8; i < 12; i++) {
System.out.print(" " + myInchesParam[i]);
}
}
}
}
我应该用做一段时间吗?还是我仍然可以通过for循环来做到这一点,而我只是做错了?
答案 0 :(得分:1)
有很多方法可以解决此问题,但是一种方法是使用模运算符来检查是否已经打印了8个条目。您将i加1,因为您的数组索引为0。
for (int i = 0; i < myInchesParam.length; i++) {
System.out.print(myInchesParam[i] + " ");
if((i + 1) % 8 == 0) {
System.out.println();
}
}
EDIT :此方法的好处是它适用于任何数组长度。其他一些建议则不会。
答案 1 :(得分:1)
好吧,发生的事情是,在循环i中,我从0开始,然后当它到达第二个循环时,将i设置为8,因此条件i <8不再有效。最简单的解决方法是不嵌套循环,而是使用
newlist <- Map(function(x, y) cbind(x@data, unique.id = y), sldfl, 1:length(sldfl))
相反。 甚至更好的可能是
BEGIN
SELECT order.order_id, SUM(product.price * order_item.quantity)
FROM `order`
JOIN `order_item` ON order.order_id = order_product.order_id
JOIN `product` ON order_product.product_id = product.product_id;
END $$
答案 2 :(得分:1)
问题是您在两个嵌套的for
循环中使用了相同的变量。这将导致外部数组在第一次迭代后停止,并仅打印第二行中的值。
如果i > 0 && i % 8 == 0
,只需使用一个循环并打印新行:
public static void printArrayValues(int[] myInchesParam) {
for (int i = 0; i < myInchesParam.length; i++) {
if (i > 0 && i % 8 == 0)
System.out.println();
System.out.print(" " + myInchesParam[i]);
}
}
或者,您也可以使用i % 8 === 7
之后插入新行:
public static void printArrayValues(int[] myInchesParam) {
for (int i = 0; i < myInchesParam.length; i++) {
System.out.print(" " + myInchesParam[i]);
if (i % 8 == 7)
System.out.println();
}
}
但是在某些情况下,使用最后一种解决方案可能会出现尾随换行的情况。