Java交换数组元素报错:不兼容的类型,找到'int'需要'int[]'
错误原因
- 报错触发在代码行
int[] arr = input.nextInt(); Scanner类的nextInt()方法返回值为单个int类型整数,你直接将其赋值给int[]数组类型的变量arr,二者类型不匹配,因此编译器抛出Incompatible types. Found: 'int', required: 'int[]'错误。
解决方法
你需要先读取数组长度完成数组初始化,再循环读取所有元素存入数组,同时建议增加索引合法性校验,避免后续交换元素时触发数组越界异常,修正后的代码如下:
import java.util.Scanner; import java.util.Arrays; public class SwapingValues { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 先读取数组长度 System.out.print("请输入数组长度:"); int length = input.nextInt(); int[] arr = new int[length]; // 循环读取数组元素 System.out.println("请输入" + length + "个整数,空格分隔:"); for (int i = 0; i < length; i++) { arr[i] = input.nextInt(); } // 索引合法性校验 if (length > 5) { swap(arr,1,5); System.out.println(Arrays.toString(arr)); } else { System.out.println("数组长度不足,无法交换索引1和5的元素"); } input.close(); } static void swap(int[] arr, int index1, int index2) { int temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } }
注意:原代码中直接写死交换索引1和5,只有当数组长度≥6的时候才合法,因此新增了长度判断逻辑,你可以根据实际需求调整交换的索引值。
内容的提问来源于stack exchange,提问作者Charan
相关产品推荐
相关产品推荐

