java17读入一个整数 m,查找数组中是否有m。若有,则输出yes;若无,则将 m 插入到数组中,并保持数组仍然有序。如果读入的m或n非正数,则输出error。
时间: 2024-10-14 12:10:46 浏览: 21
最大子序和.md
在Java 17中,你可以通过以下步骤来实现这个功能:
1. 首先,创建一个`Integer`类型的数组(例如`int[] arr`),并初始化它。假设数组已排序。
2. 使用`Scanner`类从用户输入读取整数`m`,同时检查它是否是非正数。如果不是,直接输出"error"。
```java
Scanner scanner = new Scanner(System.in);
System.out.println("请输入整数 m:");
int m = scanner.nextInt();
if (m <= 0) {
System.out.println("error");
return;
}
```
3. 然后,你可以使用二分搜索算法(Binary Search)来判断`m`是否已经在数组中。如果找到,输出"Yes";如果没有找到并且数组长度未达到最大容量,那么将`m`插入到合适的位置以保持数组有序。如果插入后数组超过其最大容量,同样输出"error"。
```java
int index = Arrays.binarySearch(arr, m); // 如果 m 存在,index >= 0; 否则 index < 0
if (index >= 0) {
System.out.println("yes");
} else {
if (arr.length < Integer.MAX_VALUE - 1) { // 插入位置
arr[index] = m;
System.out.println("插入后的数组:");
for (int num : arr) {
System.out.print(num + " ");
}
} else {
System.out.println("error (数组已满)");
}
}
```
阅读全文