由浅到深认识Java语言(26):阶段性练习

该文章Github地址:https://github.com/AntonyCheng/java-notes

在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!

上一章:由浅到深认识Java语言(25):正则表达式

38.阶段性练习

练习一:

编写一个程序,用于接收用户输入的五个数,并计算这五个数的平均数,最后将计算结果返回;

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		double[] arr = new double[5];
		double pjs = method(arr);
		System.out.println("你输入的五个数的平均数是:"+pjs);
	}
	public static double method(double[] arr) {
		Scanner sc = new Scanner(System.in);
		double sum = 0;
		System.out.println("请输入五个数,用空格分开:");
		for (int i = 0; i < arr.length; i++) {
			arr[i] = sc.nextDouble();
			sum += arr[i];
		}
		sc.close();
		return sum/5;
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习二:

编写一个函数,用于接收三角形的底和高,并计算该三角形的面积,将面积返回;

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的三角形的底和高(用空格隔开):");
		double floor = sc.nextDouble();
		double high = sc.nextDouble();
		sc.close();
		double area = method(floor,high);
		System.out.println("你的三角形面积是:"+area);
	}
	public static double method(double floor,double high) {
		return (floor*high)/2;
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习三:

编写一个函数,用于接收 3 到 10 之间的一个数,然后输出由星号组成的长方形;

例如:用户输入 4 ,输出结果如下:

****
* *
* *
****

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的图像行数:");
		int num = sc.nextInt();
		sc.close();
		method(num);
	}
	public static void method(int n) {
		for (int i = 0; i < n; i++) {
			if (i == 0 || i == n-1) {
				for (int j = 0; j < n; j++) {
					System.out.print("*");
				}
			}else {
				for (int j = 0; j < n; j++) {
					if(j == 0||j==n-1) {
						System.out.print("*");
					}else {
						System.out.print(" ");
					}
				}
			}
			System.out.println();
		}
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习四:

写一个方法 boolean checkIsOddNumber(int num) 判断输入是否为奇数;

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个需要判断的数:");
		int num = sc.nextInt();
		boolean checkIsOddNumber = checkIsOddNumber(num);
		System.out.println(checkIsOddNumber);
	}

	public static boolean checkIsOddNumber(int num) {
		if (num % 2 == 0) {
			return false;
		} else {
			return true;
		}
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习五:

写一个方法 boolean checkIsPrimeNumber(int num) 判断输入是否为素数;

方法一:

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个需要判断的数:");
		int num = sc.nextInt();
		boolean checkIsPrimeNumber = checkIsPrimeNumber(num);
		System.out.println(checkIsPrimeNumber);
	}

	public static boolean checkIsPrimeNumber(int num) {
		if(num<=1) {
			return false;
		}else {
			int count = 0;
			for (int i = 2; i <= num; i++) {
				if(num%i != 0) {
					count++;
				}
			}
			if(count == num-2) {
				return true;
			}else {
				return false;
			}
		}
	}
}

方法二:

import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个需要判断的数:");
		int num = sc.nextInt();
		boolean checkIsPrimeNumber = checkIsPrimeNumber(num);
		System.out.println(checkIsPrimeNumber);
	}

	public static boolean checkIsPrimeNumber(int num) {
		if (num <= 1) {
			return false;
		} else {
			for (int i = 2; i < num; i++) {
				if (num % i == 0) {
					return false;
				}
			}
		}
		return true;
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习六:

打印一棵圣诞树;

import java.util.Iterator;
import java.util.Scanner;

public class Demo {
	public static void main(String[] args) {
		method();
	}

	public static void method() {
		for (int i = 1; i <= 15; i++) {
			if (i <= 5) {
				for (int j = 0; j < 8 - i; j++) {
					System.out.print(" ");
				}
				for (int j = 0; j < 2 * i - 1; j++) {
					System.out.print("*");
				}
				System.out.println();
			} else if (i <= 11) {
				for (int j = 0; j < 11-i; j++) {
					System.out.print(" ");
				}
				for (int j = 0; j < 2*i-7; j++) {
					System.out.print("*");
				}
				System.out.println();
			} else {
				for (int j = 0; j < 6; j++) {
					System.out.print(" ");
				}
				for (int j = 0; j < 3; j++) {
					System.out.print("*");
				}
				System.out.println();
			}
		}
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习七:

用 Java 代码将数组元素顺序颠倒;

import java.util.Arrays;

public class Demo {
	public static void main(String[] args) {
		int arr[] = {2,3,4,5,6,7};
		int[] method = method(arr);
		System.out.println(Arrays.toString(method));
	}

	public static int[] method(int[] arr) {
		int n = arr.length;
		for (int i = 0; i < arr.length/2; i++) {
			int temp = arr[i];
			n=n-1;
			arr[i] = arr[n];
			arr[n] = temp;
		}
		return arr;
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习八:

一个名为 Account 的类模拟账户,该类的属性和方法如下图所示:

该类包括的属性:账号 id ,余额 balance , 年利率 annualInterestRate;

包含的方法:访问器方法(getter() 和 setter()),取款方法 withdraw() ,存款方法 deposit() ;

注意取款方法应该判断用户余额是否满足取款条件;

再写一个 Customer 的类模拟客户,该类的属性和方法如下图所示:

该类包括的属性:姓 firstName ,名 lastName 和账号 account;

声明一个公有构造器,这个构造器带有两个代表姓名的参数;

声明两个公有存取器来访问该对象的属性;

以上为基础,写一个测试程序:

  • 创建一个Customer,名字叫 Xiao Wu ,他有一个账号为 1900,余额为2000,年利率为 1.23% 的账户。

  • 对 Xiao Wu操作:

    存入 100 元,再取出 960 元,再取出 2000 元,然后打印 Xiao Wu 的基本信息;

    信息:存入成功!100.0元;取出成功!960.0元;余额不足取款失败;Customer [Xiao,Wu] has a account: id is 1900,annualInterestRate is 1.23%,balance is 1140.0;

package top.sharehome.Bag;

public class Demo {
	public static void main(String[] args) {
		Customer c = new Customer("Xiao", "Wu", new Account(1900, 2000, 1.23));
		Account a = c.getAccount();
		a.deposit(100);
		a.withdraw(960);
		a.withdraw(2000);
		System.out.println(a.getBalance());
		String string = c.toString(a.getAnnualInterestRate(), a.getBalance(), a.getId());
		System.out.println(string);
	}
}

class Account {
	private int id;
	private double balance;
	private double annualInterestRate;

	public Account() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Account(int id, double balance, double annualInterestRate) {
		super();
		this.id = id;
		this.balance = balance;
		this.annualInterestRate = annualInterestRate;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public double getBalance() {
		return balance;
	}

	public void setBalance(double balance) {
		this.balance = balance;
	}

	public double getAnnualInterestRate() {
		return annualInterestRate;
	}

	public void setAnnualInterestRate(double annualInterestRate) {
		this.annualInterestRate = annualInterestRate;
	}

	public void withdraw(double amount) {
		if (amount > this.balance) {
			System.out.println("余额不足取款失败");
		} else {
			this.balance = this.balance - amount;
			System.out.println("取出成功!" + amount + "元");
		}
	}

	public void deposit(double amount) {
		this.balance += amount;
		System.out.println("存入成功!" + amount + "元");
	}
}

class Customer {
	private String firstName;
	private String lastName;
	private Account account;

	public Customer(String firstName, String lastName, Account account) {
		super();
		this.firstName = firstName;
		this.lastName = lastName;
		this.account = account;
	}

	public Customer() {
		super();
		// TODO Auto-generated constructor stub
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public Account getAccount() {
		return account;
	}

	public void setAccount(Account account) {
		this.account = account;
	}

	public String toString(double annualInterestRate, double balance, double id) {
		return "Customer [" + firstName + ", " + lastName + "] has a account: id is " + account.getId()
				+ " , annualInterestRate is \n" + annualInterestRate + "% , balance is " + balance;
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

练习九:

统计 “a12 12bsk1928bc” 中的数字字符的数量;

方法一:运用字符在底层是数字存储,进行判断识别;

import java.util.Arrays;

public class Demo {
	public static void main(String[] args) {
		String str = "a12  12bsk1928bc";
		int number = isNumber(str);
		System.out.println(number);
	}

	public static int isNumber(String str) {
		char[] charArray = str.toCharArray();
		int count = 0;
		for (int i = 0; i < charArray.length; i++) {
			if (charArray[i]>='0'&&charArray[i]<='9') {
				count++;
			}
		}
		return count;
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方法二:运用 Character 中 toString 方法将 str 转换成的字符数组转成 String 类型,然后正则表达式;

import java.util.Arrays;

public class Demo {
	public static void main(String[] args) {
		String str = "a12  12bsk1928bc";
		int number = isNumber(str);
		System.out.println(number);
	}

	public static int isNumber(String str) {
		char[] charArray = str.toCharArray();
		int count = 0;
		for (int i = 0; i < charArray.length; i++) {
			String string = Character.toString(charArray[i]);
			if (string.matches("\\d")) {
				count++;
			}
		}
		return count;
	}
}

打印效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下一章:由浅到深认识Java语言(27):异常