Java实验数组

桂 林 理 工 大 学
实 验 报 告
实验名称 数组 日期 2020年 06 月02 日
一、实验目的:
1、学会使用一维与二维数组管理简单数据。
2、学会编写简单的菜单驱动(命令行式)的Java程序
二、实验环境:

Eclipse+Java

三、实验内容:
1.定义一个int型的一维数组,数组的长度由键盘输入,为数组中的元素随机赋值。依次完成如下功能:
(1) 输出数组中的元素。每行输出最多十个数字,数字之间用Tab键分隔;
(2) 计算数组中元素之和,并输出;
(3) 求出数组中元素的最大值及其位置(若有多个相同的最大值,仅输出第一个),并输出。
代码:

package shuzu;
import java.util.Scanner;
public class i {

	public static void main(String[] args) {
		
				Scanner scanner = new Scanner(System.in);
				int n;
				int sum=0;
				int max=0;
				int index=0;
				System.out.print("please input n=");
				n = scanner.nextInt();
				int [] a = new int [n];
				for(int i = 0;i < a.length;i++){
					a[i]=(int)(Math.random()*10);
					sum+=a[i];
				}
			for(int i=0;i<a.length;i++) {
				System.out.print(a[i]+"	");
				if(i!=0 && i%9==0)
					System.out.println();
			}
			System.out.println();
			System.out.println("sum=" + sum);
			for(int j=0;j<a.length;j++) {
				if(a[j]>max) {
					max=a[j];
					index=j;
				}
			}
			System.out.println("a["+index+"] has maximum value " + a[index]);	
		}
		
}

程序运行截图:
2. 定义一个二维整形数组data[5][6],数组中的元素在区间[0, 100)上随机赋值。找出数组中所有的具有这类性质的元素及其位置:该元素在所在行是最大的,但在其所在列也是最大的。如果没有这样的元素,则输出“没有这样的元素”。
代码:

package shuzu;
import java.util.Scanner;
public class arry {

	public static void main(String[] args) {
		Scanner scanner = new  Scanner(System.in);
		int [][]data=new int [5][6];
		for(int i=0;i<data.length;i++) {
			for(int j=0;j<data[0].length;j++) {
				data[i][j]=(int)(Math.random()*100)%101;
			}
		}
		
		for(int i=0;i<data.length;i++) {
			for(int j=0;j<data[0].length;j++) {
				System.out.print(data[i][j] + "\t");
			}
			System.out.println();
		}
		
		for(int i=0;i<data.length;i++) {//控制每一行的循环
			int max_i=data[i][0];
			int max_j=0;
			int index=0;
			int indey=0;
			for(int j=0;j<data.length;j++) {//找到所在行最大的数
				if(data[i][j]>max_i) {
					max_i=data[i][j];
					index=j;
				}
			}
			for(int j=0;j<data.length;j++) {//找到最大数所在的列最大数
				if(data[j][index]>max_j) {
					max_j=data[j][index];
					indey=j;
				}
			}
			if(max_i==max_j) {//行最大数与列最大数比较
				System.out.println("第"+(i+1)+"行");
				System.out.print(data[i][index]);
				System.out.println("第"+(index+1)+"列 " + "第"+(indey+1)+"行");
			}
			else
			{
				System.out.println("第"+(i+1)+"行");
				System.out.println("没有这样的元素!");
			}
		}

	}

}

程序运行截图:
3. Write a menu-driven program that provides three options (编写一个菜单驱动程序,提供如下三个选项):
a) the first option allows the user to enter a temperature in Celsius and displays the corresponding Fahrenheit temperature (第一个选项允许用户输入一个摄氏温度,并输出其相应的华氏温度);
b) the second option allows the user to enter a temperature in Fahrenheit and displays the corresponding Celsius temperature (第二个选项允许用户输入一个华氏温度,并输出其相应的摄氏温度);
c) the third option allows the user to quit (第三个选项允许用户关闭程序).
The formulate that you need are as follows, where C represents a Celsius temperature and F a Fahrenheit temperature: (以下是你需要的公式,其中C代表摄氏温度,F代表华氏温度)
F = 9C/5 + 32
C = 5(F – 32)/9
程序:

package shuzu;
import java.util.Scanner;
public class tem {

	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int section;
		float F,C;
		System.out.println("欢迎使用我们的服务!");
		System.out.println("1、摄氏温度转摄氏温度");
		System.out.println("2、华氏温度转摄氏温度");
		System.out.println("3、退出服务");
		System.out.print("请选择以上服务(1-3):");
		section=scanner.nextInt();
		switch(section) {
		case 1:
			System.out.print("请输入一个摄氏温度:");
			C=scanner.nextFloat();
			F=9*C/5+32;
			System.out.println("其相应的华氏温度为:" + F);
			break;
		case 2:
			System.out.print("请输入一个华氏温度:");
			F=scanner.nextFloat();
			C=5*(F-32)/9;
			System.out.println("其相应的摄氏温度为:" + C);
			break;
		case 3:
			System.out.println("欢迎您下次再使用,已退出!");
			break;
		}
	}

}

程序运行截图:
4. 超级递增序列指的是一个整数序列,这个序列中的每一个整数都要比它前面所有整数的和大。编写一个程序,读入一组整数,然后判断这组整数是否为超级递增序列。
输入格式为:数组长度n 数1 数2 数3 … 数n
输出格式为:“数1 数2 数3 … 数n”是(或不是)超级递增序列。
示例:当输入为5 1 2 4 9 20时,输出应为“1 2 4 9 20”是超级递增序列;当输入为6 1 4 9 14 25 65时,输出应为“1 4 9 14 25 65”不是超级递增序列。
程序:

package shuzu;
import java.util.*;
public class super_num {

	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		boolean temp=false;
		int n,sum=0;
		//System.out.print("请输入数组的长度n=");
		n=scanner.nextInt();
		int []arry=new int[n];
		for(int i=0;i<arry.length;i++)
			arry[i]=scanner.nextInt();
		for(int i=2;i<arry.length;i++) {
			for(int j=0;j<arry.length&&j<i;j++) {
				sum+=arry[j];
			}
			if(arry[i]>sum) {
				temp=true;
				sum=0;
			}
			else
				temp=false;
		}
		if(temp) {
			for(int i=0;i<arry.length;i++)
				System.out.print(arry[i] + " ");
			System.out.println("是超级递增数列");
			}
		else {
			for(int i=0;i<arry.length;i++)
				System.out.print(arry[i] + " ");
			System.out.println("不是超级递增数列");
			}
	}

}

程序运行截图:
5. (选做)编写一个程序,从键盘读入一个句子(句子中可能包含空格、大小写字母、数字、标点符号等),试统计该句子中字符(不区分大小写)、数字、空格及其它字符的个数。
代码:

package shuzu;
import java.util.Scanner;
public class Count {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int count_char=0;//统计字母
		int count_digital=0;//统计数字
		int count_blank=0;//统计空格
		int count_other=0;//统计其他
		System.out.print("请输入要统计的句子:");
		String str = scanner.nextLine();
		char[] ch=str.toCharArray();
		for(int i=0;i<str.length();i++) {
			if(ch[i]>='a'&&ch[i]<='z'||ch[i]>='A'&&ch[i]<='Z') {
				count_char++;
			}
			else if(ch[i]>='0'&&ch[i]<='9) {
				count_digital++;
			}
			else if(ch[i]==' ') {
				count_blank++;
			}
			else
				count_other++;
		}
		System.out.println("数字个数:"+count_digital);
        System.out.println("英文字母个数:"+count_char);
        System.out.println("空格个数:"+count_blank);
        System.out.println("其它字符个数:"+count_other);

			
	}

}

程序运行截图:

四、心得体会:
1、通过此次实验,了解并掌握了一维数组和二维数组的简单应用,通过运用数组能够解决一些数学问题。
2、掌握了一维数组的定义和产生方法以及初始化、引用的方法。
3、掌握了二维数组的创建和引用方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的: 1. 掌握Java数组的基本概念和用法。 2. 熟悉Java数组的定义、初始化、赋值、遍历等操作。 3. 理解Java数组在编程中的重要性和作用。 实验内容: 本次实验主要包括以下内容: 1. 数组的定义和初始化。 2. 数组的遍历和访问。 3. 数组的排序和查找。 4. 数组的复制和拼接。 实验步骤和结果: 1. 数组的定义和初始化 Java数组是一种特殊类型的变量,用于存储相同类型的据。数组可以存储基本据类型和对象类型。 定义和初始化数组的方法: ``` // 定义一个名为array的整型数组,长度为5 int[] array = new int[5]; // 初始化数组元素 array[0] = 1; array[1] = 2; array[2] = 3; array[3] = 4; array[4] = 5; ``` 也可以使用以下方式定义和初始化数组: ``` // 定义一个名为array的整型数组,同时初始化数组元素 int[] array = {1, 2, 3, 4, 5}; ``` 2. 数组的遍历和访问 数组的遍历和访问可以通过循环语句来实现。常用的循环语句有for循环和foreach循环。 ``` // 使用for循环遍历数组 for(int i=0; i<array.length; i++){ System.out.println(array[i]); } // 使用foreach循环遍历数组 for(int num : array){ System.out.println(num); } // 访问数组元素 System.out.println(array[0]); ``` 3. 数组的排序和查找 Java数组提供了sort()方法来对数组进行排序。sort()方法可以对基本据类型和对象类型进行排序。 ``` // 对整型数组进行排序 Arrays.sort(array); // 对字符串数组进行排序 String[] strArray = {"apple", "banana", "orange"}; Arrays.sort(strArray); ``` Java数组也提供了binarySearch()方法来进行二分查找。binarySearch()方法可以对已经排序的数组进行查找。 ``` // 对整型数组进行二分查找 int index = Arrays.binarySearch(array, 3); ``` 4. 数组的复制和拼接 Java数组提供了copyOf()方法来复制数组。copyOf()方法可以对原数组进行复制,也可以指定复制的长度。 ``` // 复制整个数组 int[] newArray = Arrays.copyOf(array, array.length); // 复制部分数组 int[] partArray = Arrays.copyOf(array, 3); ``` Java数组也可以通过arraycopy()方法来进行拼接。arraycopy()方法可以将一个数组的元素复制到另一个数组中。 ``` // 将两个数组拼接 int[] array1 = {1, 2, 3}; int[] array2 = {4, 5, 6}; int[] newArray = new int[array1.length + array2.length]; System.arraycopy(array1, 0, newArray, 0, array1.length); System.arraycopy(array2, 0, newArray, array1.length, array2.length); ``` 实验结论: 通过本次实验,我深入了解了Java数组的基本概念和用法。掌握了Java数组的定义、初始化、赋值、遍历、排序、查找、复制和拼接等操作。同时,也深刻认识到Java数组在编程中的重要性和作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值