java流程控制练习题(上)

简介: java流程控制练习题

分支结构


写出结果


class Demo{
public static void main(String[] args){
int m=0,n=3;
if(m>0)
if(n>2)
System.out.println("A");  
else
System.out.println("B");    
}
}


//answer:没有结果


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


public class Demo {
  public static void main(String[] args) {
        // 创建键盘输入三个整数
        int num1 = 1;
        int num2 = 3;
        int num3 = 2;
        // 排序
        if (num1 > num2) {
            int temp = num1;
            num1 = num2;
            num2 = temp;
        }
        if (num1 > num3) {
            int temp = num1;
            num1 = num3;
            num3 = temp;
        }
        if (num2 > num3) {
            int temp = num2;
            num2 = num3;
            num3 = temp;
        }
        // 输出
        System.out.println("三个整数从小到大排列:" + num1 + " " + num2 + " " + num3);
    }
}


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


import java.util.Scanner;
class TestSwitch{
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("请输入星期值:");
    int week = input.nextInt();
    switch(week){
      case 1:
        System.out.println("星期一:Monday");
        break;
      case 2:
        System.out.println("星期二:Tuesday");
        break;
      case 3:
        System.out.println("星期三:Wednesday");
        break;
      case 4:
        System.out.println("星期四:Thursday");
        break;
      case 5:
        System.out.println("星期五:Friday");
        break;
      case 6:
        System.out.println("星期六:Saturday");
        break;
      case 7:
        System.out.println("星期天:Sunday");
        break;
      default:
        System.out.println("非法星期值");
        break;
    }
  }
}


从键盘分别输入年、月、日,判断这一天是当年的第几天
import java.util.Scanner;


class TestDaysOfYear{
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("年:");
    int year = input.nextInt();
    System.out.print("月:");
    int month = input.nextInt();
    System.out.print("日:");
    int day = input.nextInt();
    int days = day;
    //加前面几个月的满月天数
    switch(month){
      case 12:
        //前面11个月的总天数
        //days += 第11月的天数;
        days += 30;
      case 11:
        //前面10个月的总天数
        //days += 第10月的天数;
        days += 31;
      case 10:
        days += 30;//九月
      case 9:
        days += 31;//八月
      case 8:
        days += 31;//七月
      case 7:
        days += 30;//六月
      case 6:
        days += 31;//五月
      case 5:
        days += 30;//四月
      case 4:
        days += 31;//三月
      case 3:
        days += 28;//二月
        /*if(闰年){
          days++;
        }
        */
        if(year % 4 ==0 && year % 100 != 0 || year%400==0){
          days++;
        }
      case 2:
        days += 31;//一月
    }
    System.out.println(year + "年" + month + "月" + day + "日是这一年的第" + days + "天");
    /*
    int days = 0;
    switch(month){
      case 1:
        days = day;
        break;
      case 2:
        days = 31 + day;
        break;
      case 3:
        //days = 31 + 二月的天数 + day;
        days = 31 + 28 + day;
        break;
      case 4:
        //days = 31 + 二月的天数 + 31 + day;
        days = 31 + 28 + 31 + day;
        break;
      ....
    }
    if(闰年 && month >2){
      days++;
    }
    */
  }
} 


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

答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是

int、 short、 char 或者 byte。long不能作用于swtich.JDK1.7新加入了String类型。

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

闰年的判断规则如下:

(1)若某个年份能被4整除但不能被100整除,则是闰年。

(2)若某个年份能被400整除,则也是闰年。


提示:


if((year % 4 ==0 && year % 100 != 0) || year % 400 == 0){
}


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


public class compare {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.print("a:");
    int a = input.nextInt();
    System.out.print("b:");
    int b = input.nextInt();
    if(a%b==0||(a+b)>1000)
      System.out.println(a);
    else {
      System.out.println(b);
    }
    input.close();
  }
}


使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。


提示:先声明两个变量,一个是char型的,用来存放用户名,一个是int型的,用来存放密码。


编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:

score>=90 等级:A

70=<score<90 等级:B

60=<score<70 等级:C

score<60 等级:D


import java.util.Scanner;
class Exam1{
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("请输入学生的成绩:");
    int score = input.nextInt();
    if(score>=90){
      System.out.println("等级:A");
    }else if(score>=70){
      System.out.println("等级:B");
    }else if(score>=60){
      System.out.println("等级:C");
    }else{
      System.out.println("等级:D");
    }
    /*
    if(score>=90){
      System.out.println("等级:A");
    }else if(score<90 && score>=70){
      System.out.println("等级:B");
    }else if(score<70 && score>=60){
      System.out.println("等级:C");
    }else{
      System.out.println("等级:D");
    }
    */
  }
}

根据指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季


import java.util.Scanner;
class TestSeason{
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.println("请输入当前月份:");
    int month = input.nextInt();
    switch(month){
      case 3:
      case 4:
      case 5:
        System.out.println("春季");
        break;
      case 6:
      case 7:
      case 8:
        System.out.println("夏季");
        break;
      case 9:
      case 10:
      case 11:
        System.out.println("秋季");
        break;
      case 12:
      case 1:
      case 2:
        System.out.println("冬季");
        break;
      default:
        System.out.println("非法月份");
    }
  }
}


求ax2+bx+c=0方程的根。

求ax2+bx+c=0方程的根。a,b,c分别为函数的参数,

如果a≠0,那么:

(1)当b2-4ac>0,则有两个解;

(2)当b2-4ac=0,则有一个解;

(3)当b2-4ac<0,则无解;

如果a=0,b≠0,那么, x = -c/b


提示1:Math.sqrt(num); sqrt指平方根

例如:

求x2-4x+1=0方程的根

求x2-2x+1=0方程的根


import java.util.Scanner;
class Exer5{
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.println("一元二次方程:ax^2+bx+c=0");
    System.out.print("请输入参数a:");
    double a = input.nextDouble();
    System.out.print("请输入参数b:");
    double b = input.nextDouble();
    System.out.print("请输入参数c:");
    double c = input.nextDouble();
    if(a!=0){
      double temp = b*b - 4*a*c;
      if(temp==0){
        double x = -b/(2*a);
        System.out.println("该方程是一元二次方法,有两个相同解:" + x);
      }else if(temp>0){
        double sqrt = Math.sqrt(temp);
        double x1 = (-b+ sqrt)/(2*a);
        double x2 = (-b- sqrt)/(2*a);
        System.out.println("该方程是一元二次方法,两个不同解:" + x1 +"," + x2);
      }else{
        System.out.println("该方程是一元二次方法,在实数范围内无解!");
      }
    }else{
      if(b!=0){
        double x = -c/b;
        System.out.println("该方程是一元一次方程,有一个解:" + x);
      }else{
        System.out.println("不是方程,是一个等式");
                if(c == 0){
                    System.out.println("等式成立");
}else{
    System.out.println("等式不成立");
}
      }
    }
  }
}


彩票游戏

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


1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。

2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。

3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。

4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。

5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。


提示:使用Math.random() 产生随机数

Math.random() 产生[0,1)范围的随机值

Math.random() * 90:[0,90)

Math.random() * 90 + 10:[10,100) 即得到 [10,99]

使用(int)(Math.random() * 90 + 10)产生一个两位数的随机数。


class TestCaiPiao{
  public static void main(String[] args){
    //1、随机产生一个两位数
    //System.out.println(Math.random());//产生[0,1)
    int number = (int)(Math.random()*90 + 10);//得到[10,99],即[10,100)
    //System.out.println(number);
    int numberShi = number/10;
    int numberGe = number%10;
    //2、用户输入一个两位数
    Scanner input = new Scanner(System.in);
    System.out.print("请输入一个两位数:");
    int guess = input.nextInt();
    int guessShi = guess/10;
    int guessGe = guess%10;
    if(number == guess){
      System.out.println("奖金10 000美元");
    }else if(numberShi == guessGe && numberGe == guessShi){
      System.out.println("奖金3 000美元");
    }else if(numberShi==guessShi || numberGe == guessGe){
      System.out.println("奖金1 000美元");
    }else if(numberShi==guessGe || numberGe == guessShi){
      System.out.println("奖金500美元");
    }else{
      System.out.println("没中奖");
    }
    System.out.println("中奖号码是:" + number);
  }
}


赌数游戏


提供三个1-6的随机数,作为掷骰子得到的点数。如果各个点数相同,则为豹子。

如果三个骰子点数和,小于或等于9,则为“小”。

如果三个骰子点数和,大于9,则为“大”。

用户随机选择:押大、押小或者押豹子。通过判断,输出客户是否押正确。


import java.util.Scanner;
class GuessNumber{
  public static void main(String[] args){
    //1、产生一个[1-6]的数
    int a = (int)(Math.random()*6+1);
    //System.out.println(a);
    int b = (int)(Math.random()*6+1);
    //System.out.println(b);
    int c = (int)(Math.random()*6+1);
    //System.out.println(c);
    /*
    a = 1;
    b = 1;
    c = 1;
    */
    String result = "";
    if(a==b && b==c){
      result = "豹子";
    }else if(a+b+c <=9 ){
      result = "小";
    }else{
            result = “大”;
}
    //2、用户输入猜的结果
    Scanner input = new Scanner(System.in);
    System.out.print("请押宝,买定离手:(选择:大、小、豹子)");
    String guess = input.next();
    //3、判断结果
    if(result.equals(guess)){
      System.out.println("猜对了");
    }else{
      System.out.println("猜错了");
    }
  }
}


生肖问题

编写一个程序,为一个给定的年份找出其对应的中国生肖。

中国的生肖基于12年一个周期,每年用一个动物代表:

rat(鼠)、ox(牛)、tiger(虎)、rabbit(兔)、dragon(龙)、snake(蛇)、horse(马)、sheep(羊)、monkey(候)、rooster(鸡)、dog(狗)、pig(猪)。

提示:2019年:猪 2019 % 12 == 3


import java.util.Scanner;
class ShengXiaoTest{
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    System.out.print("请输入年份:");
    int year = input.nextInt();
    switch(year%12){
      case 0:
        System.out.println("猴年");
        break;
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;
      case 8:
        System.out.println("龙年");
        break;
      case 9:
        System.out.println("蛇年");
        break;
      case 10:
        System.out.println("马年");
        break;
      case 11:
        System.out.println("羊年");
        break;
    }
  }
}


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


答案一:switch可以作用在byte上,不能作用在long上,JDK1.7之后可以作用在String上。

答案二:switch支持的类型byte,short,int,char,JDK1.5之后支持枚举,JDK1.7之后支持String类型。


What is the result when you compile and run the following code?


  public static void main(String[] args) {
    int a = 3;
    int b = 1;
    if(a = b){
      System.out.println("Equal");
    }else{
      System.out.println("Not Equal");
    }
  }
答案:编译不通过


循环结构:


What is the result when you compile and run the following code?


public class Test{
public void method(){
for(int i = 0; i < 3; i++) {
           System.out.print(i);
        }
        System.out.print(i);
}
}


A. 0122

B. 0123

C. compile error

D. none of these

答案:C

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

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


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


public class Sum {
  public static void main(String[] args) {
    int i,sum=0;
    for(i=1;i<1000;i++) {
      if(i%2==0) {
        sum+=i;
      }
    }
    System.out.print(sum);
  }
}


1)输入长和宽,输出长方形,如:输入4和3, 将输出如下图形

2)输入高度,输出直角三角形。如:输入4, 将输出如下图形

3)输入高度,输出倒直角三角形。如:输入4, 将输出如下图形

打印九九乘法表


public static void main(String[] args) {
    for(int i =1;i<=9;i++){
      for(int j=1;j<=i;j++){
        System.out.print(j+"*"+i+"="+(i*j) + "\t");
      }
      System.out.println();
    }
  }


3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数。


public static void main(String[] args) {
    int day = 0;
    for (int x = 3000; x >= 5; x /= 2) {
      day++;
    }
    System.out.println("day=" + day);
    /*
     * 方法二: 
     * day = 0; 
     * for(int x=3000; x>=5; day++) { 
     *    x = x/2; 
     * }
     * System.out.println(day);
     */
}


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

用循环控制语句打印输出:1+3+5+…+99=?的结果

答案一:


public static void main(String[] args) {
  int sum = 0;
  for (int i = 1; i <= 99; i+=2) {
    sum += i;
  }
  System.out.println("sum = " + sum);
}


答案二:


public static void main(String[] args) {
  int sum = 0;
  for (int i = 1; i < 100; i++) {
    if (i % 2 != 0) {
      sum += i;
    }
  }
  System.out.println("sum = " + sum);
}
目录
相关文章
|
2月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
601 1
|
2月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
176 8
|
2月前
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
364 0
|
4月前
|
自然语言处理 前端开发 Java
JBoltAI 框架完整实操案例 在 Java 生态中快速构建大模型应用全流程实战指南
本案例基于JBoltAI框架,展示如何快速构建Java生态中的大模型应用——智能客服系统。系统面向电商平台,具备自动回答常见问题、意图识别、多轮对话理解及复杂问题转接人工等功能。采用Spring Boot+JBoltAI架构,集成向量数据库与大模型(如文心一言或通义千问)。内容涵盖需求分析、环境搭建、代码实现(知识库管理、核心服务、REST API)、前端界面开发及部署测试全流程,助你高效掌握大模型应用开发。
424 5
|
2月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
355 63
|
7月前
|
安全 Java 程序员
《从头开始学java,一天一个知识点》之:控制流程:if-else条件语句实战
**你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问&quot;`a==b`和`equals()`的区别&quot;,大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 这个系列为你打造Java「速效救心丸」!每天1分钟,地铁通勤、午休间隙即可完成学习。直击高频考点和实际开发中的「坑位」,拒绝冗长概念,每篇都有可运行的代码示例。明日预告:《for与while循环的使用场景》。 ---
141 19
|
2月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
151 3
|
3月前
|
人工智能 Cloud Native Java
Java 技术栈企业级应用开发全流程
本指南通过构建企业级电商系统,全面解析现代化Java技术栈实战应用。涵盖Spring Boot 3、微服务架构、云原生部署、服务治理、监控可观测性及AI集成,助开发者掌握全流程开发技能,打造高效可扩展的企业级应用。
215 0
Java 技术栈企业级应用开发全流程
|
3月前
|
安全 Java 数据库
使用Java实现用户的注册和登录流程
以上提供了用户注册和登录的基本框架和必要的说明。在具体的应用场景中,可能还需结合框架特性如Spring Security等提供的高级特性来实现更为完备和安全的用户认证机制。在开发期间,务必注重代码的安全性、清晰性和可维护性,为用户资料保驾护航。
201 13
|
2月前
|
Java 编译器
Java 17 Switch表达式:更简洁、更强大的流程控制
Java 17 Switch表达式:更简洁、更强大的流程控制

热门文章

最新文章