第一题:数组计算
题目描述:
编写Java程序,计算两个整型数组的和、差、乘积、商的整数部分及大小关系。定义如下:
和:两个数组对应元素的和,若元素缺失,则补0;
差:第一个数组和第二个数组对应元素的差,若元素缺失,则补0;
乘积:两个数组对应元素的积,若元素缺失,则计0;
除:第一个数组元素除以第二个数组元素,所得到的商的整数部分,分母为0时,计为0;
大小关系:统计两个数组中对应元素的大小关系,认为大于对方数组元素的个数多与小于对方数组元素个数的那个数组更大,若元素缺失,则补0。1表示大于,-1表示小于,0表示等于。
输入
第一个数组:长度n和n个整数;
第二个数组:长度m和m个整数
输出
两个数组的和、差、乘积、除、大小关系(每一行行末无空格)
样例输入
3 1 2 3 4 1 2 3 4
样例输出
2 4 6 4 0 0 0 -4 1 4 9 0 1 1 1 0 -1
答案代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n1 = input.nextInt();
int[] arry1 = new int[n1];
for (int i = 0; i < arry1.length; i++) {
arry1[i] = input.nextInt();
}
int n2 = input.nextInt();
int[] arry2 = new int[n2];
for (int i = 0; i < arry2.length; i++) {
arry2[i] = input.nextInt();
}
add(arry1, arry2);
sub(arry1, arry2);
mul(arry1, arry2);
division(arry1, arry2);
compare(arry1, arry2);
}
public static void add(int[] arry1, int[] arry2) {
int max = Math.max(arry1.length, arry2.length);
for (int i = 0; i < max; i++) {
int n = arry1.length > i ? arry1[i] : 0;
int m = arry2.length > i ? arry2[i] : 0;
System.out.print(n + m);
if(i != max -1) {
System.out.print(" ");
}
}
System.out.println();
}
public static void sub(int[] arry1, int[] arry2) {
int max = Math.max(arry1.length, arry2.length);
for (int i = 0; i < max; i++) {
int n = arry1.length > i ? arry1[i] : 0;
int m = arry2.length > i ? arry2[i] : 0;
System.out.print(n - m);
if(i != max -1) {
System.out.print(" ");
}
}
System.out.println();
}
public static void mul(int[] arry1, int[] arry2) {
int max = Math.max(arry1.length, arry2.length);
for (int i = 0; i < max; i++) {
int n = arry1.length > i ? arry1[i] : 0;
int m = arry2.length > i ? arry2[i] : 0;
System.out.print(n * m);
if(i != max -1) {
System.out.print(" ");
}
}
System.out.println();
}
public static void division(int[] arry1, int[] arry2) {
int max = Math.max(arry1.length, arry2.length);
for (int i = 0; i < max; i++) {
int n = arry1.length > i ? arry1[i] : 0;
int m = arry2.length > i ? arry2[i] : 0;
if(n*m != 0) {
System.out.print(n / m);
}else {
System.out.print(0);
}
if(i != max -1) {
System.out.print(" ");
}
}
System.out.println();
}
public static void compare(int[] arry1, int[] arry2) {
int max = Math.max(arry1.length, arry2.length);
int mark1 = 0;
int mark2 = 0;
for (int i = 0; i < max; i++) {
int n = arry1.length > i ? arry1[i] : 0;
int m = arry2.length > i ? arry2[i] : 0;
if(n > m) {
mark1 += 1;
}else if(n<m) {
mark2 += 1;
}
}
if(mark1 > mark2) {
System.out.println(1);
}else if(mark1 < mark2) {
System.out.println(-1);
}else {
System.out.println(0);
}
}
}
答案代码介绍:
有一个名为Main的类,包含了以下几个方法:
1. main方法:包含了程序的入口点,通过Scanner类获取用户输入的两个整数数组,然后调用其他方法进行加法、减法、乘法、除法和比较操作。
2. add方法:接受两个整型数组作为参数,将这两个数组对应位置的元素相加,并输出结果。
3. sub方法:接受两个整型数组作为参数,将第一个数组的元素减去第二个数组的元素,并输出结果。
4. mul方法:接受两个整型数组作为参数,将这两个数组对应位置的元素相乘,并输出结果。
5. division方法:接受两个整型数组作为参数,将第一个数组的元素除以第二个数组的元素,并输出结果。如果除数为0,则输出0。
6. compare方法:接受两个整型数组作为参数,比较这两个数组对应位置的元素大小,输出比较结果。如果第一个数组中的元素大于第二个数组中的元素,则输出1;如果小于,则输出-1;如果相等,则输出0。
这些方法实现了对两个整型数组进行加减乘除和比较的操作,并根据不同的需求输出相应的结果。