分支和循环练习题
1. 判断用户输入的字符是不是英文字符,如果是输出yes,不是 输出no
/*
分析:
1.用户输入的是字符类型,准备字符类型变量
char ch1
2.输入操作 需要使用 Scanner 来完成
Scanner sc = new Scanner(System.in);
3. if - else 分支结构
*/
import java.util.Scanner; //导包,使代码具有使用 Scanner 的能力
class Work1 {
public static void main(String[] args) {
//创建 Scanner 变量
Scanner sc = new Scanner(System.in);
//定义一个 char 类型变量,用于储存用户输入的数据
char ch = '\0';
//提示用户输入
System.out.println("请输入字符:");
ch = sc.nextLine().charAt(0);
// if - else 结构判读数据情况
if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
2. 判断用户输入的工资是不是在5000以上,如果是,输出需要缴税,如果不是,输出不需要缴税
/*
分析:
1.工资使用 float 类型
2.用户输入数据 Scanner 获取
3. if - else 分支结构
*/
import java.util.Scanner;
class Work2 {
public static void main(String[] args) {
//创建 Scanner 变量
Scanner sc = new Scanner(System.in);
//0.0F 大写 F 是明确告知编译器, 当前 0.0 是一个float 类型数据
float salary = 0.0F;
System.out.println("请输入你的工资");
//从键盘上获取用户输入的 float 类型数据
salary = sc.nextFloat();
if (salary > 5000) {
System.out.println("需要纳税");
} else {
System.out.println("不需要纳税");
}
}
}
3. 用户输入一个年份,判断这个年份是不是一个闰年。
/*判断是否是闰年*/
import java.util.Scanner;
class Work3 {
public static void main(String[] args) {
int year = 0;
//准备 Scanner 变量
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
//从键盘上获取 int 类型数据
year = sc.nextInt();
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
System.out.println("是闰年");
} else {
System.out.println("不是闰年");
}
}
}
4. 输入两个整数,打印两数之差的绝对值。
/*
分析:
1.需要定义两个 int 类型变量
2.需要 Scanner 获取两次用户输入数据
3.通过 if 判断输入数据大小关系,处理结果,明确大 - 小
*/
import java.util.Scanner;
class Work4 {
public static void main(String[] args) {
int num1 = 0;
int num2 = 0;
//创建 Scanner 变量
Scanner sc = new Scanner(System.in);
System.out.println("请输入两个整数:");
num1 = sc.nextInt();
num2 = sc.nextInt();
if (num1 > num2) {
System.out.println(num1 - num2);
} else {
System.out.println(num2 - num1);
}
}
}
5. 输入一个数, 判断是否是偶数,如果是偶数,输出YES,如果是奇数,输出NO
import java.util.Scanner;
class Work5 {
public static void main(String[] args) {
int a = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
a = sc.nextInt();
if (a % 2 == 0) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
6. 输入一个人的年份, 检测这个是否是80后,如果是输出YES, 如果不是输出NO(1980-1989年)
import java.util.Scanner;
class Work6 {
public static void main(String[] args) {
int year = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的出生年份:");
year = sc.nextInt();
if (year >= 1980 && year <= 1989) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
7. 展示0 ~ 100以内的所有偶数
// for 循环执行101次
// if 判断执行 101 次 ,可以通过判断 51 次
class Work7 {
public static void main(String[] args) {
for (int i = 0; i <=100; i++) {
if (i % 2 == 0) {
System.out.println(i);
}
}
/*
方法二 for 循环执行 51 次(更优解)
for (int i = 0; i <= 100; i += 2) {
System.out.println(i);
}
*/
}
}
8. 展示0 ~ 100以内的所有奇数
class Work8 {
public static void main(String[] args) {
for (int i = 1; i <= 100; i += 2) {
System.out.println(i);
}
}
}
9. 计算1 - 150 的和
class Work9 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 150; i++) {
sum += i;
}
System.out.println("1~150的和为:" + sum);
/*优化
System.out.println((1 + 150) * 150 / 2);
*/
}
}
10. 逢7过!!! 【100以内的】
/*
逢7过 【100以内的】
1. 7 的倍数 i % 7 == 0
2. 带有 7 的数
个位为7:i % 10 == 7
十位为7:i / 10 == 7
*/
class Work10 {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) {
System.out.println("过");
} else {
System.out.println(i);
}
}
}
}
11. 多种方法打印26个小写字母
class Work11 {
public static void main(String[] args) {
char ch = 'a';
System.out.println("while 循环");
// while 循环
while (ch <= 'z') {
System.out.println(ch);
ch += 1; //ch++;
/*
ch += 1; 正确,Java编译器可以自行转换类型,特殊功能
ch = ch + 1; 报错
错误: 不兼容的类型: 从int转换到char可能会有损失
数据类型不一致,导致错误
*/
}
System.out.println("do while 循环");
// do - while 循环
ch = 'a';
do {
System.out.println(ch);
ch += 1;
} while (ch <= 'z');
System.out.println("for 循环");
// for 循环
for (ch = 'a'; ch <= 'z'; ch++) {
System.out.println(ch);
}
}
}
12. 例如: 输入 5 8; 计算 5 + 6 + 7 + 8; 输出 26.
/*
分析:
1. 用户输入的数据 两个 int 类型数据
2. 用户提供的 int 类型数据是在控制数据的计算范围,循环范围。
3. 用户输入数据的较小值是 循环开始,较大值是循环终止条件。
[注意]
需要对用户输入的数据,进行优化调整!!!
*/
import java.util.Scanner;
class Work12 {
public static void main(String[] args) {
// 定义两个 int 类型变量
int num1 = 0;
int num2 = 0;
// 创建 Scanner 变量
Scanner sc = new Scanner(System.in);
// 提示用户输入两个数据
System.out.println("请输入两个整数:");
num1 = sc.nextInt();
num2 = sc.nextInt();
// 处理用户输入数据 num1 和 num2 大小关系,保证 num1 <= num2;
if (num1 > num2) {
// 定义一个临时变量,用于数据交换操作
int temp = num1;
num1 = num2;
num2 = temp;
}
// 利用 for 循环计算得到数据结果
int ret = 0;
for (int i = num1; i <= num2; i++) {
ret += i;
}
System.out.println(ret);
}
}
13. 整数逆序输出, 例如输入一个整数12345,输出5 4 3 2 1
import java.util.Scanner;
class Work13 {
public static void main(String[] args) {
int num = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数:");
num = sc.nextInt();
while (num > 0) {
int a = num % 10;
System.out.print(" " + a);
num /= num ;
}
}
}
14.

class Work14 {
public static void main(String[] args) {
int line = 5;
// 控制当前图像总行数
for (int i = 1; i <= line; i++) {
// 控制每一行完成的任务 星星个数 ==> 总行数
for (int j = 1 ; j <= line; j++) {
System.out.print("*");
}
System.out.println(); //每次循环换行
}
}
}
15.

class Work15 {
public static void main(String[] args) {
int line = 5;
for (int i = 1; i <= line; i++) {
//每层星星数量 = 行数
for (int j = 1 ; j <= i; j++) {
System.out.print("*");
}
System.out.println(); //每次循环换行
}
}
}
16.

class Work16 {
public static void main(String[] args) {
int line = 5;
// for - i 控制总行数,目前总行数为 5
for (int i = 1; i <= line; i++) {
// for - j 控制每一行 空格 个数,总行数 - 当前是第几行
for (int j = 1; j <= line - i; j++) {
System.out.print(' ');
}
// for - k 控制每一行的星星个数,2 * 当前是第几行 - 1
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print('*');
}
System.out.println();
}
}
}
17.

class Work17 {
public static void main(String[] args) {
//上面5行
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5 - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= i * 2 - 1; k++) { // i 是 1 3 5 7 9 的基数
System.out.print("*");
}
//换行
System.out.println();
}
//下面4行
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
for (int k = 7; k >= i * 2 -1; k--) { //* 7 5 3 1
System.out.print("*");
}
System.out.println();
}
}
}
18.

class Work18{
public static void main(String[] args) {
char[] arr = {'A','B','C','D','E'};
//数组下标
int index1 = 0;// 顺移下标
int index2 = 0;// 逆移下标
// 输出上三角
for (int i = 0; i < 5; i++){
// 确定最后一个字符的位置
for (int j = 0; j < 5 + i; j++) {
//判断第一个字符出现的位置
if (j < 4 - i){
System.out.print(' ');
} else if (j <= 4){
//顺序打印,下标右移
System.out.print(arr[index1++]);
//顺移结束,下标需左移
index2 = index1 - 1;
} else {
// 逆序打印,下标左移
System.out.print(arr[--index2]);
}
}
//一行结束,下标归 0
index1 = 0;
index2 = 0;
System.out.print('\n');
}
//输出下三角,有 4 行
for (int i = 0; i < 4; i++){
// 确定最后一个字符的位置
for (int j = 0; j < 8 - i; j++) {
//判断第一个字符出现的位置
if (j < i + 1){
System.out.print(' ');
} else if (j <= 4){
//顺序打印,下标右移
System.out.print(arr[index1++]);
//顺移结束,下标需左移
index2 = index1 - 1;
} else {
// 逆序打印,下标左移
System.out.print(arr[--index2]);
}
}
//一行结束,下标归 0
index1 = 0;
index2 = 0;
System.out.print('\n');
}
}
}
19.

class Work19{
public static void main(String[] args) {
//打印行数
int raw = 7;
//对称列
int center = raw / 2;
for (int i = 0; i < raw; i++) {
for (int j = 0; j < raw; j++) {
if (i <= center){
//上部分星号打印判断,以对称列向两边扩展
if (j - i == center || j + i == center) {
System.out.print('*');
} else {
System.out.print('#');
}
} else {
//打印下部分星号打印判断,以对称列向两边扩展
if (i - j == center || i + j == raw + center - 1) {
System.out.print('*');
} else {
System.out.print('#');
}
}
}
System.out.print('\n');
}
}
}
20. 自己完成一个爱心
class Work20 {
public static void main(String[] args) {
for (float y = (float) 1.5; y > -1.5; y -= 0.1) {
for(float x = (float) -1.5; x < 1.5; x += 0.05) {
float a = x * x + y * y - 1;
if((a * a * a - x * x * y * y * y) <= 0.0) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
