中南大学软件学院实验报告课程名称Java面向对象程序设计SSD3实验项目名称实验2《一维数组》学生姓名专业班级学号实验成绩日期实验学时: 2每组人数: 1实验类型: 1 (1:基础性2:综合性3:设计性4:研究性)实验要求: 1 (1:必修2:选修3:其它)实验类别: 2 (1:基础2:专业基础3:专业4:其它)一、实验目的学习一维数组的用法。
二、实验内容1. (P182, 6.3)编写程序,读取1-100之间的整数,然后计算每个数出现的次数。
假package java_shiyan_two;import java.util.Scanner;public class Jscs_6_3 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("Enter the integers between 1 and 100 :");int list[]=new int[88];Scanner input=new Scanner(System.in);for (int i=0;i<=list.length;i++){list[i]=input.nextInt();if(list[i]==0){break;}if (list[i]<1||list[i]>100){System.out.print("WRONG");continue;}}int[] list1=insertionSort (list);cout(list1);}/** 数组排序*/public static int[] insertionSort (int[] list){ int[] result=new int [list.length];for (int i=0 ;i<list.length;i++){int c=list[i];int k;for (k=i-1;k>=0&&list[k]>c;k--){list[k+1]=list[k];}list [k+1]=c;}for (int d=0;d<list.length;d++){result[d]=list[d];}return result;}/** 打印数组*/public static void Println(int[] list){for (int q=0;q<list.length;q++){System.out.print(list[q]+" ");}}public static void cout(int[] list){for(int m=0;m<list.length;m++){if(list[m]!=0){if(count(list,list[m])==1){System.out.println(list[m]+" occurs 1 time");}else{System.out.println(list[m]+" occurs"+count(list,list[m])+" times");m=m+count(list,list[m])-1;}}}}public static int count (int []list,int a){int c=0;for (int i=0;i<list.length;i++){if(a==list[i]){c++;}}return c;}}结果截图与分析:该结果满足实验要求2. (P183,6.10)编写一个方法,求出整数数组中最小元素的下标。
如果这样的元素个数大于1,则返回最小下标。
使用下面的方法头:public static void indexOfSmallestElement(double[] array)编写测试程序,提示用户输入10个数字,调用这个方法,返回最小元素的下标,然后显示这个下标值。
代码实现:package java_shiyan_two;import java.util.Scanner;public class MinX_6_10 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("Please enter 10 numbers:");double list[]=new double[10];Scanner input=new Scanner(System.in);for (int i=0;i<list.length;i++){list[i]=input.nextDouble();}int a=indexOfSmallestElement(list);System.out.print(a);}public static int indexOfSmallestElement(double[] list){ int a=0;for(int index =0;index<list.length;index++){int y=0;for (int i=0;i<list.length;i++){if (list[index]<=list[i]){y++;};if (y==10){a=index;break;}}}return a;}}结果截图与分析:该结果满足实验要求3. (P182,6.5)编写程序,读入10个数并显示互不相同的数(即一个数出现多次,但仅显示一次)。
提示,读入一个数,如果它是一个新数,则将它存储在数组中,如果该数已经在数组中,则忽略它。
输入之后,数组包含的都是不同的数。
以下是运行示例:输入10个整数:1 2 3 2 1 6 3 4 5 2互不相同的数为:1 2 3 6 4 5代码实现:package java_shiyan_two;import java.util.Scanner;public class PrintDifferent_6_5 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("Please enter 10 numbers:");double list[]=new double[10];Scanner input=new Scanner(System.in);double a=0;int c=list.length;for (int i=0;i<c;i++){a=input.nextDouble();if (Find(list,a)==-1){list[i]=a;//System.out.print(a);}else{i--;c--;}}Println(list,c);}public static int Find(double [] list ,double a){ for (int i=0;i<list.length;i++){if (a==list[i]){return i;}} return -1;}public static void Println(double[] list,int n){for (int q=0;q<n;q++){System.out.print(list[q]+" ");}}}结果截图与分析:该结果满足实验要求4.(P186,6.27)如果两个数组list1和list2内容相同,那么就说它们是相同的。
使用下面的方法头编写一个方法,如果list1和list2是相同的,该方法就返回true:public static Boolean equal(int[ ] list1, int[ ] list2)编写一个测试程序,提示用户输入两个整数数列,然后显示它们两个是否相同。
以下是运行示例。
注意输入的第一个数字表示数列中元素的个数。
【该题可在4月23日的理论课后代码实现:package java_shiyan;import java.util.Scanner;public class Samelist_6_27 {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("please enter the length of list one" );Scanner input=new Scanner(System.in);int n1=input.nextInt();System.out.print("please enter the length of list two" );int n2=input.nextInt();int[] list1=new int [n1];int[] list2=new int [n2];System.out.print("Please enter the list one");for (int i=0;i<n1;i++){list1[i]=input.nextInt();}System.out.print("Please enter the list two");for (int i=0;i<n2;i++){list2[i]=input.nextInt();}if(equal(list1,list2)){System.out.print("Two lists are identical");}else{System.out.print("Two lists are not identical");}}public static boolean equal(int[] list1,int[] list2){ boolean charge =true;int[] listOne=new int[list1.length];listOne=insertionSort(list1);int[] listTwo=new int[list2.length];listTwo=insertionSort(list2);if(list1.length!=list2.length){charge=false;}else{for (int j=0;j<list1.length;j++){if(listOne[j]!=listTwo[j]){charge=false;}}}return charge;}/** 数组排序*/public static int[] insertionSort (int[] list){ int [] result=new int[list.length];for (int i=0 ;i<list.length;i++){int c=list[i];int k;for (k=i-1;k>=0&&list[k]>c;k--){list[k+1]=list[k];}list [k+1]=c;}for (int d=0;d<list.length;d++){result[d]=list[d];}return result;}}结果截图与分析:该结果满足实验要求5. (附加题5.31 信用卡号的合法性,可选做)信用卡号遵循下面的模式。