java_SSD3_实验报告_一维数组

本文通过四个编程题目,详细介绍了Java中一维数组的应用,包括计算1-100整数出现次数、查找数组中最小元素的下标、去除数组中重复元素及判断两个数组是否相同。每个题目均附带源代码、运行效果和结果分析,强调了边界条件检查和避免数组越界的重要性。
摘要由CSDN通过智能技术生成

第一题

编写程序,读取1-100之间的整数,然后计算每个数出现的次数。假定输入是以0结束的。以下是程序运行示例:
在这里插入图片描述

(1)源代码:

package 实验2;

import java.util.Scanner;

public class Program1 {

	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		//创建数组,array数组储存输入的数,count数组为计数数组
		int[] array = new int[20];
		int[] count = new int[100];
		for(int i=0;i<100;i++){
			count[i]=0;
		}
		//设置bool值来判断是否输入有误
		boolean bool = true;
		//输入操作
		System.out.println("请依次输入0~100之间的数,以输入0作为结尾(0不考虑进去)");
		for(int i=0;;i++){
			array[i] = input.nextInt();
			if(array[i]==0){
				break;
			}
			else if(array[i]<0||array[i]>=100){
				bool=false;
				break;
			}
			count[array[i]]++;
		}
		if(!bool){
			System.out.println("您输入了不符合要求的数");
		}//必须有的判断,不然就会出现数组越界的情况
		else{
			for(int i=0;i<100;i++){
				if(count[i]!=0){
					System.out.println(i+" 出现"+count[i]+"次");
				}
			}
		}
	}
}

(2)效果

测试一:
在这里插入图片描述
测试二:
在这里插入图片描述

(3)结果分析与心得体会

测试1结果没有问题,测试2输入了123为不符合要求的数,所以有图示输出。测试2是做好本题的关键,若考虑不周会导致数组越界报错,一定要注意

第二题

编写一个方法,求出整数数组中最小元素的下标。如果这样的元素个数大于1,则返回最小下标。使用下面的方法头:
public static int indexofSmallestElement(double[] array)
编写测试程序,提示用户输入10个数字,调用这个方法,返回最小元素的下标,然后显示这个下标值。

(1)源代码:

package 实验2;

import java.util.Scanner;

public class Program2 {
	public static int indexofSmallestElement(double[] array){
		int result=0;
		double min=array[0];
		for(int i=1;i<10;i++){
			if(array[i]<min){
				min = array[i];
				result = i;
			}
		}
		return result;
	}
	public static void main(String[] args) {
		System.out.println("请输入10个数字");
		Scanner input = new Scanner(System.in);
		double[] a = new double[10];
		for(int i=0;i<10;i++){
			a[i] = input.nextInt();
		}
		System.out.println("这10个数中最小数的(最小)下标为:"+indexofSmallestElement(a));
	}

}

(2)效果:

测试1:
在这里插入图片描述
测试2:
在这里插入图片描述

(3)结果分析与心得体会

测试1:10个数中最小的数为3,是第8个,所以下标为7
测试2:10个数中最小的数为2,位于第三个和第七个的位置,所以最小下标为2
本题用了min和result分别储存最小数和最小下标,两个最小容易弄混,要保持思路清晰

第三题

编写程序, 读入10个数并显示互不相同的数(即一个数出现多次,但仅显示一次)。提示,读入一个数,如果它是一个新数,则将它存储在数组中,如果该数已经在数组中,则忽略它。输入之后,数组包含的都是不同的数。以下是运行示例:
输入10个整数 :1 2 3 2 1 6 3 4 5 2
互不相同的数为:1 2 3 6 4 5

(1)源代码:

package 实验2;

import java.util.Scanner;

public class Program3 {

	public static void main(String[] args) {
		System.out.print("输入10个整数:");
		Scanner input = new Scanner(System.in);
		double[] a = new double[10];
		for(int i=0;i<10;i++){
			a[i] = input.nextDouble();
		}
		System.out.print("互不相同的数有:");
		for(int i=0;i<10;i++){
			int count=0;
			for(int j=0;j<i;j++){
				if(a[i]==a[j]){
					count++;
				}
			}
			if(count==0){
				System.out.print(a[i]+" ");
			}
		}

	}

}

(2)效果

测试1:
在这里插入图片描述
测试2:
在这里插入图片描述

(3)结果分析与心得体会

测试1输入的10个整数互不相同,直接输出
测试2中输入了10个数,相同的只算一个后只剩下5个数
本题使用的思路和老师的有区别,老师的是在储存数组的时候判断是否与之前储存的有重复从而不重复储存,而本代码思路为全部储存,输出的时候不重复输出。条条道路通罗马,没其他感想。

第四题

如果两个数组list1和list2内容相同,那么就说它们是相同的。使用下面的方法头编写一个方法,如果list1和list2是相同的,该方法就返回true:
public static boolean equal(int[ ] list1, int[ ] list2)
编写一个测试程序,提示用户输入两个整数数列,然后显示它们两个是否相同。以下是运行示例。注意输入的第一个数字表示数列中元素的个数。
在这里插入图片描述
在这里插入图片描述

(1)源代码:

package 实验2;

import java.util.Scanner;

public class Program4 {
	public static boolean equal(int[ ] list1, int[ ] list2,int size){
		int count = 0;
		for(int i=0;i<size;i++){
			if(list1[i]!=list2[i]){
				count++;
			}
		}
		if(count==0) return true;
		else         return false;
	}
	
	public static void main(String[] args) {
		//新建数组申请空间
		int[] array1 = new int[10];
		int[] array2 = new int[10];
		Scanner input = new Scanner(System.in);
		//输入操作
		System.out.print("现在输入第一个数列的项数:");
		int size1 = input.nextInt();
		System.out.print("现在请分别输入第一个数列的数:");
		for(int i=0;i<size1;i++){
			array1[i] = input.nextInt();
		}
		System.out.print("现在输入第二个数列的项数:");
		int size2 = input.nextInt();
		System.out.print("现在请分别输入第二个数列的数:");
		for(int i=0;i<size2;i++){
			array2[i] = input.nextInt();
		}
		//进行判断
		if(size1!=size2){
			System.out.println("这两个数列是不同的");
		}
		else if(size1==size2){
			if(equal(array1,array2,size1)){
				System.out.println("这两个数列是相同的");
			}
			else if(!equal(array1,array2,size1)){
				System.out.println("这两个数列是不同的");
			}
		}
	}

}

(2)效果:

测试1:
在这里插入图片描述
测试2:
在这里插入图片描述
测试3:
在这里插入图片描述

(3)结果分析与心得体会

测试1:项数不同,数列不可能相同
测试2:项数相同,每一项都相同,故这两个数组相同
测试3:项数相同,第二项不同,故这两个数组不相同
测试1容易被忽略,一定要注意,数列相同前提条件项数必须相同。本题输出形式与提示输入有区别,笔者认为直接让项数和每一项具体的数分开输入的用户体验更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值