每日一题(小白)数组娱乐篇17
对一个数组进行接收进行操作后输出。输入三个操作数abc,将数组下标a到b的数字加上c;输入四个操作数abcd,将下标c到d的数字复制到a到b,可以借用一个中间量数组实现;两个操作数ab,将数组下标a到b的数字加和输出。可以通过重写三个方法,在主函数里通过循环调用。重点就是判断数字的操作具体是执行什么,考虑使用字符串接收一行数据。
①输入三个数字和一个数组,返回一个数组
②输入四个数字和一个数组,返回一个数组
③输入两个数字和一个数组,返回一个数字
④循环m次上述操作
进行了优化,直接将数组变成全局变量,每次修改不用返回新的数组,只有一个输出输出即可。
代码如下👇
static int[] arr1= new int[100];
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int case1=scan.nextInt();//实列
int n=scan.nextInt();//数组个数
int m=scan.nextInt();//字符串个数,操作次数
arr1=new int[n+1];
for (int i = 1; i <= n; i++) {
arr1[i]=scan.nextInt();//原数组
}
String[] s=new String[m];
int arr2[][]=new int[m][10];
for (int i = 0; i < m; i++) {
s[i]=scan.nextLine();
s[i]=s[i].replaceAll(" ","");
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < s[i].length(); j++) {
arr2[i][j]=s[i].charAt(j)-'0';
}
}
for (int i = 0; i < m; i++) {
if (s[i].length()==3) {
caozuo(arr2[i][0], arr2[i][1],arr2[i][2]);
}else if (s[i].length()==4) {
caozuo(arr2[i][0], arr2[i][1],arr2[i][2],arr2[i][3]);
}else if (s[i].length()==2) {
caozuo(arr2[i][0], arr2[i][1]);
}else if (s[i].length()==5) {
caozuo(arr2[i][0], arr2[i][1],arr2[i][2]);
caozuo(arr2[i][3], arr2[i][4]);
}
}
scan.close();