按下列要求设计两个类: ① 类ArraysApps,用于数组操作,包含下面4个方法: ★ int selMin(int[] arr1); //返回一维数组中的最小数 ★ void delete(int[] arr); //先对一维数组升序排序,再删除相同元素 ★ void insert(int[] arr,int le,int x); //先对一维数组arr(数组长度为len)升序排序,再插入元素x,并输出插入元素后的数组结果,以及所有元素的平均值(保留两位小数) ★ int[] arrSum(int[][] arr2); //求二维数组每一行的元素之和 ② 主类,用于声明一个一维数组、二维数组,并输入两个数组的元素的值,然后调用类ArraysApps的4个方法后得到相应的结果并输出。 10. 编程实现:从键盘上输入一个字符串和一个字符,从该字符串中删除给定的字符。例如: 输入字符串:Student 输入需要删除的字符:u 输出为:Stdent
时间: 2024-03-21 17:37:56 浏览: 117
好的,按照您的要求,我来设计这两个类。
首先是ArraysApps类,它包含四个方法:
```java
import java.util.Arrays;
public class ArraysApps {
public static int selMin(int[] arr1) {
int min = arr1[0];
for (int i = 1; i < arr1.length; i++) {
if (arr1[i] < min) {
min = arr1[i];
}
}
return min;
}
public static void delete(int[] arr) {
Arrays.sort(arr);
int len = arr.length;
int index = 0;
for (int i = 1; i < len; i++) {
if (arr[i] != arr[index]) {
index++;
arr[index] = arr[i];
}
}
for (int i = 0; i <= index; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static void insert(int[] arr, int len, int x) {
Arrays.sort(arr);
int[] newArr = new int[len + 1];
int index = 0;
while (index < len && arr[index] < x) {
newArr[index] = arr[index];
index++;
}
newArr[index] = x;
while (index < len) {
newArr[index + 1] = arr[index];
index++;
}
for (int i = 0; i < newArr.length; i++) {
System.out.print(newArr[i] + " ");
}
System.out.println();
double avg = 0;
for (int i = 0; i < newArr.length; i++) {
avg += newArr[i];
}
avg /= newArr.length;
System.out.printf("所有元素的平均值是:%.2f\n", avg);
}
public static int[] arrSum(int[][] arr2) {
int[] res = new int[arr2.length];
for (int i = 0; i < arr2.length; i++) {
int sum = 0;
for (int j = 0; j < arr2[i].length; j++) {
sum += arr2[i][j];
}
res[i] = sum;
}
return res;
}
}
```
在上面的代码中,我们定义了一个包含四个方法的ArraysApps类。其中,selMin方法用于返回一维数组中的最小数;delete方法用于先对一维数组升序排序,再删除相同元素;insert方法用于先对一维数组升序排序,再插入元素x,并输出插入元素后的数组结果,以及所有元素的平均值;arrSum方法用于求二维数组每一行的元素之和。
接下来是主类,我们可以在主类中声明一个一维数组和一个二维数组,并输入它们的元素值,然后调用ArraysApps类中的四个方法,得到相应的结果并输出。
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 声明一个一维数组
int[] arr1 = new int[5];
System.out.println("请输入一维数组的元素:");
for (int i = 0; i < arr1.length; i++) {
arr1[i] = scanner.nextInt();
}
// 声明一个二维数组
int[][] arr2 = new int[3][4];
System.out.println("请输入二维数组的元素:");
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
arr2[i][j] = scanner.nextInt();
}
}
// 调用ArraysApps类中的方法
System.out.println("一维数组中的最小数是:" + ArraysApps.selMin(arr1));
System.out.print("删除相同元素后的一维数组是:");
ArraysApps.delete(arr1);
System.out.println("插入元素后的一维数组是:");
ArraysApps.insert(arr1, arr1.length, 3);
System.out.println("二维数组每一行的元素之和是:");
int[] res = ArraysApps.arrSum(arr2);
for (int i = 0; i < res.length; i++) {
System.out.print(res[i] + " ");
}
System.out.println();
}
}
```
在上面的代码中,我们声明了一个一维数组arr1和一个二维数组arr2,并输入它们的元素值。然后,我们调用ArraysApps类中的四个方法,得到相应的结果并输出。
现在我们来实现题目中的字符串删除操作,主要思路是用StringBuilder类来操作字符串。
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 从键盘上输入一个字符串和一个字符
System.out.println("请输入一个字符串:");
String str = scanner.nextLine();
System.out.println("请输入需要删除的字符:");
char ch = scanner.next().charAt(0);
// 从该字符串中删除给定的字符
StringBuilder sb = new StringBuilder(str);
for (int i = 0; i < sb.length(); i++) {
if (sb.charAt(i) == ch) {
sb.deleteCharAt(i);
i--;
}
}
System.out.println("删除指定字符后的字符串为:" + sb.toString());
}
}
```
在上面的代码中,我们从键盘上输入一个字符串和一个字符,然后使用StringBuilder类来操作字符串,遍历字符串中的每一个字符,如果发现需要删除的字符,则将其从字符串中删除。最后,我们输出删除指定字符后的字符串。
阅读全文