想要输出数组{19, 28, 37, 46, 50}我想明白为啥又输出了一个50,想要了解为啥50}没有替换掉50,这一过程是咋样的

public class Demo1 {
public static void main(String[] args) {
int[] arr ={19, 28, 37, 46, 50};
System.out.print("输出当前数组:" + "{");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ", ");
if (i == arr.length - 1) {
System.out.println(arr[i] + "}");
}
}

}

}

img

img


这里当i==arr.length-1的时候,最后一个值先打印一次 50,再进if语句打印一次 50}
所以就有了你现在的结果。

if (i == arr.length - 1) {
System.out.println(arr[i] + "}");
}else{
System.out.print(arr[i] + ", ");
}
要输出这个?

主要是在你的if判断那里
你用for循环打印了这个数组的内容,然后每次循环判断是否为数组的最后一个元素。
问题就出在了最后一次循环,if条件成立,此时打印的内容为arr[i] + "}" arr[i] = 50。
程序是顺序执行的,你的for循环里面的第一句打印数组内容,此时不会管if的条件是否成立,因为还没有执行到这里。
打印完了以后继续 往下执行,判断条件是否相等,相等,打印。条件成立是循环到最后一个元素。这里面你自己有打印了数组的最后一个数字,所以是两个50.
参考如下:
public static void main(String[] args) {
int[] arr = {19, 28, 37, 46, 50};
System.out.print("输出当前数组:" + "{");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.println(arr[i] + "}");
}else{
System.out.print(arr[i] + ", ");
}
}
}

输出逻辑有问题呗,给你参考一下
public class Demo1 {
public static void main(String[] args) {
int[] arr ={19, 28, 37, 46, 50};
System.out.print("输出当前数组:" + "
{");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] );
if (i < arr.length - 1) {
System.out.print( ",");
}
}
System.out.println("}");
}
}

为啥不用toString方法呢?
public static void main(String args[]){
int[] arr ={19, 28, 37, 46, 50};
System.out.print("输出当前数组:" + Arrays.toString(arr));

  }

img


最后一个输出了两次