Java数组和字符串:实验-数组和字符串的综合应用

目的:
(1)掌握数组的声明、创建及初始化;
(2)掌握字数组的常用操作:
(3)掌握字符串的声明、创建;
(4)掌握字符串的常用操作:

实践一:打印数组元素

【实验目的】
(1) 掌握数组的声明创建;
(2) 掌握数组的初始化;
(3) 掌握数组常用的操作;

  • 打印数组中的元素
  • 对所有元素求和
  • 找出最大/最小的元素
  • 求平均值
  • 移动元素
  • 数组排序
  • 查找数组元素
  • 比较数组中的元素

【实践1内容】

打印数组元素
该程序应提示用户输入几个整数,将它们存储到数组中,然后以向前和向后的顺序打印出这些整数。 完成程序,使其正常运行。 使用数组使程序足够灵活,无论用户想要多少个整数,它都可以工作。

运行示例如下:
你要输入多少个数据? 4
请输入一个整数: 12
请输入一个整数: 8
请输入一个整数: -2
请输入一个整数: 39

正向顺序:
12
8
-2
39
逆向顺序:
39
-2
8
12

实验一运行代码:

import java.util.Scanner;

public class PrintArray {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		
		//输入数据
		System.out.println("请输入整数的个数:");
		int n = sc.nextInt();
		//1、声明数组
		int array[];
		
		//2、创建数组
		array = new int[n];
		
		//3、数组初始化,使用输入值初始化
		for (int i = 0; i < array.length; i++) {
    
    
			System.out.print("请输入一个整数:");
			array[i] = sc.nextInt();
		}
		
		//4、 引用数组元素,打印数组元素
		//4.1正向打印
		System.out.println("正向顺序:");
		for (int i = 0; i < array.length; i++) {
    
    
			System.out.println(array[i]);
		}
		
		//4.2逆向打印
		System.out.println("逆向顺序:");
		for (int i = array.length-1;i >= 0; i--) {
    
    
			System.out.println(array[i]);
		}
		
		sc.close();

	}

}

实验二:会员信息验证——密码验证

某系统注册时,要求设定的密码至少要由英文字符、数字和下划线组成,密码长度至少6位。请编写一个Java应用程序实现对该密码的验证。如果密码不符合要求,请给予适当的提示,诸如“密码至少要由英文字符、数字和下划线组成”、“密码长度至少6位”等。
提示:

int length( ):返回字符串的长度
char charAt(int index):返回字符串中index位置上的字符

实验二运行代码:

import java.util.Scanner;

public class StringTask02 {
    
    

	public static void main(String[] args) {
    
    
		// 输入密码
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您设置的密码:");
		String mima = sc.next();
		
		//密码验证
		if (mima.length() >= 6) {
    
    
			//判断组成成分
			boolean havaChar = false;//有没有字符
			boolean havaDig = false;//有没有数字
			boolean hava_ = false;//有没有下划线
			
			for (int index = 0; index < mima.length(); index++) {
    
    
				char ch = mima.charAt(index);
				if (Character.isLetter(ch)) {
    
    //相当于ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z'
					havaChar = true;//有字母
				}else if (Character.isDigit(ch)) {
    
    //相当于ch >= '0' && ch <= '9'
					havaDig = true;//有数字
				}else if (ch == '_') {
    
    
					hava_ = true;//有下划线
				}
				if (havaChar && havaDig && hava_) {
    
    
					break;
				}
			}
			if (havaChar && havaDig && hava_) {
    
    
			System.out.println("密码设置成功!");
			}else {
    
    
				System.out.println("密码需要包含字母、数字和下划线三个成分!");
			}
		}else {
    
    //长度不符合要求
			System.out.println("密码长度至少6位!");
		}
		sc.close();
	}

}

实验三:杨辉三角

杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。二项式定理与杨辉三角形是一对天然的数形趣遇,它把数形结合带进了计算数学。求二项式展开式系数的问题,实际上是一种组合数的计算问题。用系数通项公式来计算,称为“式算”;用杨辉三角形来计算,称作“图算”。其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而杨辉三角的发现就是十分精彩的一页。杨辉 三角示例如下:
在这里插入图片描述
通过二维数组实现杨辉三角形前N行的求值并打印输出。

实验三运行代码:

import java.util.Scanner;

public class YangHuiSanJiao {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要打印的杨辉三角行数:");
		final int N = sc.nextInt();
		
		//1、声明一个数组
		int [][] yh;
		
		//2、创建数组对象
		yh = new int[N][];
		for (int i = 0; i < yh.length; i++) {
    
    
			yh[i] = new int[i+1];//单独为每一行分配一个长度
		}
		
		//3、数组的初始化
		for (int i = 0; i < yh.length; i++) {
    
    //控制行下标
			for (int j = 0; j < yh[i].length; j++) {
    
    //控制列下标
				if (j == 0 || j == yh[i].length-1) {
    
    //第一列或者最后一列
					yh[i][j] = 1;//第一列或者最后一列的值为1
				}else {
    
    //除第一列和最后一列的其它数组元素
					yh[i][j] = yh[i-1][j] + yh[i-1][j-1];
				}
				
			}
		}
		
		//4、打印输出杨辉三角形
		for (int i = 0; i < yh.length; i++) {
    
    
			for (int j = 0; j < yh[i].length; j++) {
    
    
				System.out.print(yh[i][j]+"\t");
			}
			
			System.out.println();//换行
		}
		sc.close();
	}

}

实验三:回文串

所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”
题目:判断一个字符串是否为回文
编写应用程序实现:接受键盘输入的字符串,并判断该字符串是否回文。

实验三运行代码:

import java.util.Scanner;

public class StringTask03 {
    
    

	public static void main(String[] args) {
    
    
		// 输入字符串
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个字符串:");
		String s = sc.next();
		
		//判断是否同文
		//1、方法1
		boolean isHuiWen = true;//假设是回文串
		for (int index = 0; index < s.length()/2; index++) {
    
    
			if (s.charAt(index) != s.charAt(s.length()-1-index)) {
    
    //对称位置的字符不相等
				isHuiWen = false;//不是回文串
				break;
			}
		}
		
		//输出结果
		if (isHuiWen) {
    
    
			System.out.println(s+"是回文串!");
		}else {
    
    
			System.out.println(s+"不是回文串!");
		}
		
		
		sc.close();
	}

}

方法2

package Class4;

import java.util.Scanner;

public class StringTask03 {
    
    

	public static void main(String[] args) {
    
    
		// 输入字符串
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个字符串:");
		String s = sc.next();
		
		//判断是否同文
		//1、方法1
//		boolean isHuiWen = true;//假设是回文串
//		for (int index = 0; index < s.length()/2; index++) {
    
    
//			if (s.charAt(index) != s.charAt(s.length()-1-index)) {//对称位置的字符不相等
//				isHuiWen = false;//不是回文串
//				break;
//			}
//		}
		
		//方法2
		char[] ch = new char[s.length()];
		for (int index = s.length() - 1,i = 0; index >= 0; index--,i++) {
    
    
			ch[i] = s.charAt(index);
		}
		
		//输出结果
		if (s.equals(new String(ch))) {
    
    
			System.out.println(s+"是回文串!");
		}else {
    
    
			System.out.println(s+"不是回文串!");
		}
		
		
		sc.close();
	}

}

方法3

import java.util.Scanner;

public class StringTask03 {
    
    

	public static void main(String[] args) {
    
    
		// 输入字符串
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个字符串:");
		String s = sc.next();
		
		//判断是否同文
		//1、方法1
//		boolean isHuiWen = true;//假设是回文串
//		for (int index = 0; index < s.length()/2; index++) {
    
    
//			if (s.charAt(index) != s.charAt(s.length()-1-index)) {//对称位置的字符不相等
//				isHuiWen = false;//不是回文串
//				break;
//			}
//		}
		
		//方法2
//		char[] ch = new char[s.length()];
//		for (int index = s.length() - 1,i = 0; index >= 0; index--,i++) {
    
    
//			ch[i] = s.charAt(index);
//		}
		
		//方法3 使用StringBuilder
		StringBuilder builder = new StringBuilder(s);
		//输出结果
		if (s.equals(builder.reverse().toString())) {
    
    
			System.out.println(s+"是回文串!");
		}else {
    
    
			System.out.println(s+"不是回文串!");
		}
		
		
		sc.close();
	}

}

猜你喜欢

转载自blog.csdn.net/m0_46700215/article/details/106459526
今日推荐