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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值