JavaSE基本语法下练习题

JavaSE基本语法下练习题

  • 分支结构
  • 循环结构
  • 混合结构练习
  • 参考资料

分支结构

1 实现对三个整数进行排序,输出时按照从小到大的顺序输出

package com.atguigu.exer3;

import java.util.Scanner;

public class SortNumber {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请依次输入三个整数:");
		int num1 = scan.nextInt();
		int num2 = scan.nextInt();
		int num3 = scan.nextInt();
		
		// 嵌套if-else结构确实能做 但是我这次不想去用这个结构
		
		int max1 = (num1 > num2)?num1:num2;
		int min1 = (num1 > num2)?num2:num1;
		
		int max = (max1 > num3)?max1:num3;
		int min = (min1 > num3)?num3:min1;
		
		int middle = num1 + num2 + num3 - max - min;
		System.out.println("从小到大排序为:" + min +"," + middle + "," + max);
	}
}

2 编写程序,从键盘接收整数参数。如果该数为1-7,打印对应的星期值,否则打印“非法参数”

package com.atguigu.exer3;

import java.util.Scanner;
public class PrintDays {
     
	public static void main(String[] args) {
     
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("请输入(1-7)之间的整数:");
		int day = scan.nextInt();
		
		if(day < 1 || day > 7) {
     
			System.out.println("非法输入!");
		}else {
     
			switch(day) {
     
				case 1:
					System.out.println("星期一");
					break;
				case 2:
					System.out.println("星期二");
					break;
				case 3:
					System.out.println("星期三");
					break;
				case 4:
					System.out.println("星期四");
					break;
				case 5:
					System.out.println("星期五");
					break;
				case 6:
					System.out.println("星期六");
					break;
				case 7:
					System.out.println("星期七");
					break;
			}
		}
	}
}

3 switch是否能作用在byte上,是否能作用在long上,是否能作用在String上

switch结构中的表达式,只能是如下的6种数据类型:byte,short,char,int,枚举类型,String类型

4 编写程序,判断给定的某个年份是否是闰年

闰年的判断规则如下:
(1)若某个年份能被4整除但不能被100整除,则是闰年。
(2)若某个年份能被400整除,则也是闰年

package com.atguigu.exer3;

import java.util.Scanner;

public class SortNumber {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);
		
		System.out.print("请输入年份:");
		int year = scan.nextInt();
		if( (year % 4 ==0 && year % 100 !=0) || year % 400 == 0){
     
			System.out.println(year + "年是闰年!")
		}else{
     
			System.out.println(year + "年不是闰年!")
			}	
}

5 要求用户输入两个数a和b,如果a能被b整除或者a加b大于1000,则输出a;否则输出b

package com.atguigu.exer3;

import java.util.Scanner;
public class HandleIntNumber {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入两个整数:");
		int a = scan.nextInt();
		int b = scan.nextInt();
		
		if(b % a == 0 || a + b > 1000) {
     
			System.out.println(a);
		}else {
     
			System.out.println(b);
		}
	}
}

6 彩票游戏

假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。

1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废

package com.atguigu.exer3;

import java.util.Scanner;

public class Lottery {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);

		// 系统生成的 10-99
		int Random = (int) ((99 - 10 + 1) * Math.random()) + 10;

		System.out.println("系统随机生成的数为 :" + Random);
		System.out.print("请输入两位数:");
		int input = scan.nextInt();

		if (input < 10 || input > 99) {
     
			System.out.println("输入非法!");
			return;
		}

		int inputTen = input / 10;
		int inputOne = input % 10;

		int RandomTen = Random / 10;
		int RandomOne = Random % 10;

		if (inputTen == RandomTen && inputOne == RandomOne) {
     
			System.out.println("奖金10000美元!");
		} else if (inputTen == RandomOne && inputOne == RandomTen) {
     
			System.out.println("奖金3000美元!");
		} else if (inputTen == RandomTen || inputOne == RandomOne) {
     
			System.out.println("奖金1000美元!");
		} else if (inputTen == RandomOne || inputOne == RandomTen) {
     
			System.out.println("奖金500美元!");
		} else {
     
			System.out.println("无奖励!");
		}
	}
}

7 赌数游戏

提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。
如果三个骰子点数和,小于或等于9,则为“小”。
如果三个骰子点数和,大于9,则为“大”。
用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。

package com.atguigu.exer3;

import java.util.Scanner;

public class Gamber {
     
	public static void main(String[] args) {
     
		
		Scanner scan = new Scanner(System.in);
		System.out.print("请输入(大/小/豹子):");
		String userString = scan.next();
		
		// 1-6 之间随机字符
		int a = (int)(Math.random()*(6-1+1)) + 1;
		int b = (int)(Math.random()*(6-1+1)) + 1;
		int c = (int)(Math.random()*(6-1+1)) + 1;
		
		String randomString;
		
		if(a == b && b == c) {
     
			randomString = "豹子";
		}else {
     
			if( a+b+c <= 9) {
     
				randomString = "小";
			}else {
     
				randomString = "大";
			}
		}
		
		System.out.println("用户输入的结果 :" +userString);
		System.out.println("随机的结果 :" +randomString);
		
		if(userString.equals(randomString)) {
     
			System.out.println("正确!");
		}else {
     
			System.out.println("错误!");
			
		}
	}
}

8 生肖问题

编写一个程序,为一个给定的年份找出其对应的中国生肖。
中国的生肖基于12年一个周期,每年用一个动物代表:
rat(鼠)、ox(牛)、tiger(虎)、rabbit(兔)、dragon(龙)、snake(蛇)、
horse(马)、sheep(羊)、monkey(候)、rooster(鸡)、dog(狗)、pig(猪)。
提示:2019年:猪 2019 % 12 == 3

package com.atguigu.exer3;

import java.util.Scanner;
public class Animals {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);
		
		System.out.print("请输入年份:");
		int year = scan.nextInt();
		
		String[] animals = new String[] {
     "猪","鼠","牛","虎","兔","龙","蛇",
				"马","羊","猴","鸡","狗"};
		
		System.out.println(animals[(year-3) % 12] + "年");
	}
}

循环结构

1 打印1-100之间13的倍数,使用for循环

package com.atguigu.exer3;

public class ForExer1 {
     
	public static void main(String[] args) {
     
		for(int i = 1;i <= 100;i++) {
     
			if(i % 13 == 0) {
     
				System.out.print(i + " ");
			}
		}
		System.out.println();
	}
}

2 使用双重循环打印20 * 8的矩形,使用for循环实现

package com.atguigu.exer3;

public class ForExer2 {
     
	public static void main(String[] args) {
     
		for(int i = 0;i < 20;i++) {
     
			for(int j = 0;j < 8;j++) {
     
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

3 用for循环计算1000以内偶数的和

package com.atguigu.exer3;

public class ForExer3 {
     
	public static void main(String[] args) {
     
		
		int sumOdd = 0;
		
		for(int i = 0;i <= 1000;i++) {
     
			sumOdd += i;
		}
		
		System.out.println("偶数的和为" +sumOdd);
	}
}

4 打印1-100之间非13的倍数,使用continue语句

package com.atguigu.exer3;

public class ForExer4 {
     
	public static void main(String[] args) {
     
		for(int i = 1;i < 100;i++) {
     
			
			if(i % 13 == 0) {
     
				continue;
			}
			
			if(i % 10 ==0) {
     
				System.out.println();
			}
			
			System.out.print(i + " ");
		}
	}
}

混合结构练习

1 猜数字游戏
随机生成一个100以内的数,猜数字游戏:
从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次

package com.atguigu.exer3;

import java.util.Scanner;
public class GuessNumber {
     
	public static void main(String[] args) {
     
		
		Scanner scan = new Scanner(System.in);
		System.out.print("请输入0-99之间的数 :");
		int userNumber = scan.nextInt();
		int count = 0;
		//0-99的随机数
		int randomNumber = (int)(Math.random()*100);
		
		if(userNumber < 0 || userNumber > 99) {
     
			System.out.println("非法输入");
		}else {
     
			while(true) {
     
				count += 1;
				if(userNumber == randomNumber) {
     
					System.out.println("猜对了");
					break;
				}else if(userNumber > randomNumber) {
     
					System.out.println("猜大了");
				}else {
     
					System.out.println("猜小了");
				}
				
				
				System.out.print("请输入0-99之间的数 :");
				userNumber = scan.nextInt();
			}
			
			System.out.println("总共猜了" + count + "次");
		}
	}
}

2 打印1-100之间数,其中3、5、7的倍数不打印(continue)

package com.atguigu.exer3;

public class PrintNumber {
     
	public static void main(String[] args) {
     
		for(int i = 1;i <= 100;i++) {
     
			if(i % 3 == 0 || i % 5 == 0 ||i % 7 == 0) {
     
				continue;
			}
			
			if( i % 10 == 0) {
     
				System.out.println();
			}
			
			System.out.println(i + " ");
		}
	}
}

3 编程 找出1000以内的所有完数

一个数如果恰好等于它的因子之和,这个数就称为"完数"。(因子:除去这个数本身的约数)

package com.atguigu.exer3;

public class SearchNumber {
     
	public static void main(String[] args) {
     
		for(int i = 1;i < 1000;i++) {
     
			int temp = i;//temp 判断因子
			
			//写循环 找出 i的因子 
			for(int j = 1;j < i;j++) {
     
				if (i % j == 0) {
     
					temp -= j;
				}
			}
			
			if(temp == 0) {
     
				System.out.println(i + " ");
			}
			
			if( i % 100 == 0) {
     
				System.out.println();
			}
		}
	}
}

4 写一个程序,找出4位数的所有吸血鬼的数字

例如:1260=2160 1827=2187

public class Test1 {
     
//没看懂
	public static void main(String[] args) {
     
		for (int num = 1001; num < 10000; num++) {
     
			math(num);
		}
	}

	public static void math(int num) {
     
		int[] temp1 = new int[2];
		int[] temp2 = new int[2];

		int a = num / 1000;
		int b = num / 100 % 10;
		int c = num / 10 % 10;
		int d = num % 10;
		int[] data = {
      a, b, c, d };
		for (int i = 0; i < data.length; i++) {
     
			for (int j = 0; j < data.length; j++) {
     
				if (i == j) {
     
					continue;
				}
				temp1[0] = data[i];
				temp1[1] = data[j];
				for (int m = 0; m < data.length; m++) {
     
					if (m != i && m != j) {
     
						temp2[0] = data[m];
						for (int n = 0; n < data.length; n++) {
     
							if (n != i && n != j && n != m) {
     
								temp2[1] = data[n];
								multi(data, temp1, temp2);
							}
						}
					}
				}
			}
		}
	}

	public static int toInt(int[] temp) {
     
		int m = 0;
		int[] temp1 = new int[temp.length];
		for (int i = 0; i < temp.length; i++) {
     
			temp1[i] = temp[i] * (int) Math.pow(10, temp.length - 1 - i);
		}
		for (int i = 0; i < temp1.length; i++) {
     
			m += temp1[i];
		}
		return m;
	}

	public static void multi(int[] temp, int[] temp1, int[] temp2) {
     
		int i = toInt(temp1);
		int j = toInt(temp2);
		int k = toInt(temp);
		if (k == i * j) {
     
			System.out.println(k + "=" + i + "*" + j);
		}
	}
}

5 生成13位条形码

package com.atguigu.exer3;

import java.util.Scanner;
public class MakeSpecialCode {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);
		
		System.out.print("请输入12位数字编号:");
		long number = scan.nextLong();
		long temp = number;
		long[] array = new long[12];
		int i = 0;
		
		while(temp > 0) {
     
			array[i] = temp % 10;
			temp /= 10;
			i++;
		}
		
		long sumOdd =0, sumEven = 0;
		for(int j = 0;j < array.length;j++) {
     
			if(j % 2 == 0) {
     
				sumEven += array[j];
			}else {
     
				sumOdd += array[j];
			}
		}
		
		System.out.println("当前偶数之和为 " + sumEven + ",当前奇数之和为" + sumOdd);
		
		long oddEvenOp = ( 10 - ((sumOdd + 3*sumEven) % 10)) % 10;
		System.out.println("计算出来的第13为号码为:" + oddEvenOp);
		
		String resultNumber = "";
		for(int j = 11;j >= 0;j--) {
     
			resultNumber += array[j];
		}
		
		System.out.println("结果的编号序号为:" + resultNumber + oddEvenOp);
	}
}

6 实现判断一个4位整数,统计出此整数里面包含多少个偶数,多少个奇数的功能

package com.atguigu.exer3;

import java.util.Scanner;
public class CountOddEven {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);
		
		System.out.print("请输入四位整数:");
		int number = scan.nextInt();
		int sumOdd = 0,sumEven = 0;
		
		if(number < 1000 || number > 10000) {
     
			System.out.println("输入非法");
		}else {
     
			int temp;
			while(number > 0) {
     
				temp = number % 10;
				
				if(temp % 2 == 0) {
     
					sumEven++;
				}else {
     
					sumOdd++;
				}
				
				number /= 10;
			}
			
			System.out.println("奇数个数为:" + sumOdd + ",偶数个数为:" + sumEven);
		}
		
		
	}
}

7 有3个整数,给出提示信息:

能否创建三角形;两边之和大于第三边 三个条件都要写
如果能构建三角形,提示是直角三角形还是等边三角形等腰三角形还是普通三角形;
最后输出三角形面积

package com.atguigu.exer3;

import java.util.Scanner;
public class Triangle {
     
	public static void main(String[] args) {
     
		Scanner scan = new Scanner(System.in);
		
		System.out.print("请输入第一个整数:");
		int a = scan.nextInt();
		System.out.print("请输入第二个整数:");
		int b = scan.nextInt();
		System.out.print("请输入第三个整数:");
		int c = scan.nextInt();
		double p ;//三角形周长
		double area;//三角形面积
		
		
		boolean judge1 = method(a,b,c);
		boolean judge2 = method(a,c,b);
		boolean judge3 = method(b,c,a);
		
		if(judge1 && judge2 && judge3) {
     
			if(a == b && b == c) {
     
				System.out.println("等边三角形");
			}else if(a == b || b == c || a == c) {
     
				System.out.println("等腰三角形");
				//不存在 等腰直角三角形的情况
			}else if(a*a + b*b == c*c ||a*a + c*c ==b*b ||b*b + c*c ==a*a) {
     
				System.out.println("直角三角形");
			}else {
     
				System.out.println("普通三角形");
			}
			
			p = (a+b+c)/2;
			area = Math.sqrt(p*(p-a)*(p-b)*(p-c));
			System.out.println("三角形面积为 :" + area);
			
		}else {
     
			System.out.println("这三个整数不能构成三角形.");
		}
	}
	
	public static boolean method(int a,int b,int c) {
     
		boolean isFlag = false;
		if( a + b > c) {
     
			isFlag = true;
		}
		return isFlag;
	}
}

参考资料

尚硅谷-Java零基础教程

你可能感兴趣的:(#,JAVA,java,编程语言,eclipse)