实例14 判断输入的年份是否为闰年
import java.util.Scanner;
public class Control_01 {
public static void main(String[] args) {
System.out.println("请输入需要进行判断是否为闰年的年份:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine(); // 从控制台上获取录入的信息
if (str.length() != 4) { // 判断输入是不是合法的年份
System.out.println("请输入正确的4位数!!");
}
int year = Integer.parseInt(str); // 将字符串转换成int型
boolean flag1 = year % 400 == 0; // 判断是否能被400整除,返回一个布尔值
boolean flag2 = (year % 4 == 0) && (year % 100 != 0);
// 判断是否能被4整除但不能被100整除,返回一个布尔值
String message = (flag1 || flag2) ? "是闰年" : "不是闰年"; // 利用条件运算符得出year是否是闰年
System.out.println(year + " " + message); // 打印出相应的信息
}
}
实例15 抽奖活动
import java.util.Random;
public class Control_02 {
final static int num = 4; //设置抽奖号码的字符个数
public static void main(String[] args) {
Random rd = new Random(); //创建Random对象
String str = "";
for (int i = 0; i < num; i++) { //连续生成4个范围在0和1之间的随机数
String s = rd.nextInt(2) + "";
str = str + randomSelection(s); //将调用randomSelection方法后产生的结果连接在一起
}
System.out.println("您的抽奖符号为:" + str);
System.out.println(drawaLottery(str));
}
public static String randomSelection(String str) {//根据随机数获取相应的符号
if (str.equals("1")) { //1:表示实体五角星;0:表示空心五角星
return "★";
} else {
return "☆";
}
}
public static String drawaLottery(String str) { //根据生成的符号来兑奖
if (str.equals("★★★★")) {
return "恭喜您抽取了本次活动的一等奖,奖励人民币1000万元";
} else if (str.equals("★★★☆")) {
return "祝贺您抽取了本次活动的二等奖,奖励人民币80万元";
} else if (str.equals("★★☆☆")) {
return "祝贺您抽取了本次活动的三等奖,奖励人民币8000元";
} else {
return "谢谢您的参与!!";
}
}
}
实例16 小九九乘法表
public class Nine {
public static void main(String[] args) {
for (int i = 1, j = 1; j <= 9; i++) {
System.out.print(i + "*" + j + "=" + i * j + " ");
if (i == j) {
i = 0;
j++;
System.out.println();
}
}
}
}
实例17 如何列出素数
import java.util.Arrays;
public class ForCycle_06 {
private static boolean[] primeNumber(int num){ //求质数
if(num<=0){ //检查指定的范围
System.out.println("范围必须大于0");
return null;
}
boolean[]primes=new boolean[num+1]; //声明布尔类型数组,长度为范围+1.
primes[1]=false; //将特殊数字1抛出,因为1不是质数
Arrays.fill(primes, 2,num+1,true); //将布尔数组元素的值都赋为true
int n=(int)Math.sqrt(num); //Math.sqrt方法用于求开方
for(int i=1;i
实例18 Java中的递归
public class ForCycle_07 {
public static int circleFactorial(int n) { // 利用循环的方式求阶乘
int sum = 1;
if (n < 0) { // 判断参数n是否为负数
throw new IllegalArgumentException("必须为正整数!"); // 抛出不合理参数异常
}
for (int i = 1; i <= n; i++) { // 执行n次循环操作
sum *= i; // 每循环一次进行乘法运算
}
return sum; // 返回阶乘的值
}
public static int recursiveFactorial(int n) { // 利用递归算法求阶乘
int sum = 1;
if (n < 0)
throw new IllegalArgumentException("必须为正整数!"); // 抛出不合理参数异常
if (n == 1) {
return 1; // 如果n=1则跳出循环
} else {
sum = n * recursiveFactorial(n - 1); // 运用递归计算
return sum;
}
}
public static void main(String[] args) {
int n = 5;
System.out.println("利用循环的方式求" + n + "的阶乘" +
"\n其结果为:" // 调用circleFactorial
+ circleFactorial(n)+"\n");
System.out.println("利用递归算法求" + n + "的阶乘" +
"\n其结果为:" // 调用recursiveFactorial
+ recursiveFactorial(n));
}
}
实例19 男生女生各多少人?
public class ForCycle_02 {
public static void main(String[] args) {
ForCycle_02 fc02 = new ForCycle_02(); // 创建本类的实例,用于调用本类的方法
int sum; // 定义和的属性
System.out.println("100~999之间的水仙花数为:");
for (int i = 100; i <= 999; i++) { // 因为题意给出水仙花数是一个三位数,所以100-999就是它的范围
int a = fc02.getSumOfCubic(i / 100); // i / 100算出的是百位上的数字
int b = fc02.getSumOfCubic((i / 10) % 10); // (i / 10) % 10算出的是十位上的数字
int c = fc02.getSumOfCubic(i % 10); // i % 10算出的是个位上的数字
sum = a + b + c; //求三者之间的和
if (sum == i) { // 判断该数如果等于其各位上的立方和,就打印出该数字即是 水仙花数
System.out.print(i + " ");
}
}
}
public int getSumOfCubic(int num) { // 用于计算参数num的立方和
num = num * num * num;
return num;
}
}
实例20 求水仙花数
public class ForCycle_02 {
public static void main(String[] args) {
ForCycle_02 fc02 = new ForCycle_02(); // 创建本类的实例,用于调用本类的方法
int sum; // 定义和的属性
System.out.println("100~999之间的水仙花数为:");
for (int i = 100; i <= 999; i++) { // 因为题意给出水仙花数是一个三位数,所以100-999就是它的范围
int a = fc02.getSumOfCubic(i / 100); // i / 100算出的是百位上的数字
int b = fc02.getSumOfCubic((i / 10) % 10); // (i / 10) % 10算出的是十位上的数字
int c = fc02.getSumOfCubic(i % 10); // i % 10算出的是个位上的数字
sum = a + b + c; //求三者之间的和
if (sum == i) { // 判断该数如果等于其各位上的立方和,就打印出该数字即是 水仙花数
System.out.print(i + " ");
}
}
}
public int getSumOfCubic(int num) { // 用于计算参数num的立方和
num = num * num * num;
return num;
}
}
实例21 求任意一个正数的阶乘
public class ForCycle_03 {
public static void main(String[] args) {
System.out.println("请输入一个正整数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int layer = num;
int j = 1;
loop: while (true) { // break标号
layer = layer * (num - j); // 算阶层的具体实现
j++; // j不断自加
if (j == num)
break loop; // 如果j>I,就结束内偱环
}
System.out.println(num + "的阶层为:" + layer);
}
}
实例22 求n的n次方
package Chapter03;
import java.util.Scanner;
public class ForCycle_04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入底数:");
int num = sc.nextInt(); // num表示的是底数
System.out.println("请输入幂数:");
int power = sc.nextInt(); // 表示是幂
int result = 1; // 表示最后的结果
for (int i = 0; i < power; i++) {
result = result * num;
}
System.out.println(num + "的" + power + "次方是 " + result);
}
}
实例23 利用for循环输出几何图形
public class ForCycle_05 {
public static void showEquilateral(int row) { // 输出等腰三角形图形
for (int i = 1; i < row; i++) { // 外层循环控制输出的行数
for (int j = 1; j <= row - i; j++) { // j表示输出的空格数,其空格数=总行数-1
System.out.print(" ");
}
for (int x = 1; x <= i * 2 - 1; x++) { // x表示输出的字符"*",其个数=当前行数*2-1
System.out.print("*");
}
System.out.println(); // 每输出一行就换行一次
}
}
public static void showRhombus(int row) { // 输出菱形图形
if (row >= 1) { // 判断传入的行数
int x, y;
for (x = 1; x <= row; x++) { // 先输出上半部分的正三角形
for (y = 1; y <= row - x; y++) // 控制左边输出的空格数
System.out.print(" ");
for (y = 1; y <= 2 * x - 1; y++) // 控制输出的"#"数
System.out.print("#");
System.out.println(); // 每输出一行就换行一次
}
for (x = 1; x <= row; x++) { // 输出下半部分的正三角形
for (y = 1; y <= x; y++) // 控制左边输出的空格数,与上半部分正好相反
System.out.print(" ");
for (y = 1; y <= 2 * (row - x) - 1; y++) // 控制输出的"#"数
System.out.print("#");
System.out.println(); // 每输出一行就换行一次
}
} else {
System.out.println("您输入的行数错误,请重新输入!!!");
}
}
public static void showLettersTriangle(int row) { // 输出由小写字母排列的直角三角形
for (int i = 1; i <= row; i++) { // 外层循环row次,输出row行
for (int x = 1; x < i; x++) // 字母由小到大排列输出
System.out.print((char) (x + 96)); // x + 96是将数字转换成小写字母
for (int y = i; y != 0; y--) // 字母由大到小排列输出
System.out.print((char) (y + 96));
System.out.println(); // 每输出一行就换行一次
}
}
public static void main(String[] args) {
System.out.println("(1) 输出等腰三角形图案");
showEquilateral(7); // 输出行数为7的等腰三角形图案
System.out.println("(2) 输出菱形图案");
showRhombus(5); // 输出行数为5的菱形图案
System.out.println("(3) 输出字母排列的直角三角形图案");
showLettersTriangle(5); // 输出行数为5的字母排列的直角三角形图案
}
}
实例24 杨辉三角
public class ForCycle_08 {
public static void yh_Triangle(int array[][], int rows) { // 其作用是输出杨辉三角
for (int i = 0; i <= rows; i++) { // 行循环
for (int j = 0; j <= array[i].length - 1; j++) { // 列循环
if (i == 0 || j == 0 || j == array[i].length - 1)
array[i][j] = 1; // 将两边元素设为1
else
// 元素值为其正上方元素与左上角元素之和
array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
}
}
for (int i = 0; i <= rows; i++) { // 行循环
for (int j = 0; j <= array[i].length - 1; j++) // 列循环
System.out.print(array[i][j] + " "); // 输出数组元素
System.out.println(); // 换行
}
}
public static void main(String args[]) {
final int rows = 7; // 设置行数
int array[][] = new int[rows + 1][]; // 声明二维数组,行数为8
for (int i = 0; i <= rows; i++) { // 循环初始化数组
array[i] = new int[i + 1];
}
System.out.println("杨辉三角如下:");
yh_Triangle(array, rows); // 调用方法显示杨辉三角
}
}