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);
}
目录
相关文章
|
7月前
|
存储 Java
创建一个乘法练习题生成器 using Java
创建一个乘法练习题生成器 using Java
|
2月前
|
缓存 监控 Java
Java线程池提交任务流程底层源码与源码解析
【11月更文挑战第30天】嘿,各位技术爱好者们,今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者,我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器,其重要性不言而喻。今天,我将以对话的方式,带你一步步深入线程池的奥秘,从概述到功能点,再到背景和业务点,最后到底层原理和示例,让你对线程池有一个全新的认识。
65 12
|
2月前
|
小程序 前端开发 算法
|
2月前
|
Java API 开发者
Java如何实现企业微信审批流程
大家好,我是V哥。本文分享如何在企业微信中实现审批流程,通过调用企业微信的开放API完成。主要内容包括获取Access Token、创建审批模板、发起审批流程和查询审批结果。提供了一个Java示例代码,帮助开发者快速上手。希望对你有帮助,关注V哥爱编程,编码路上同行。
132 4
|
6月前
|
消息中间件 存储 Java
使用Java构建实时数据处理流程
使用Java构建实时数据处理流程
|
3月前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
46 1
|
3月前
|
前端开发 安全 Java
java发布公告的实现流程
构建一个Java公告发布系统涉及到前端界面设计、后端业务逻辑处理、数据库设计与交互、安全性保障等多个环节。通过采用现代的开发框架和最佳实践,可以高效地开发出既安全又易于维护的系统。随着需求的增长,系统还可以进一步扩展,比如增加评论功能、通知订阅、多语言支持等。
62 1
|
3月前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文介绍了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署和云原生部署。每种方式的特点、部署流程及优缺点进行了详细说明。传统部署直接在物理机上运行应用,存在资源利用率低和运维成本高的问题;虚拟化部署通过虚拟机实现资源隔离和复用,但有性能损失和单点故障风险;容器化部署则提供轻量级、可移植的应用环境,具备良好的隔离性和一致性;云原生部署结合了容器化和微服务架构,实现高效运维和灵活扩展。
Java项目部署的发展流程
|
5月前
|
运维 Cloud Native Java
Java项目部署的发展流程
本文对比分析了四种不同的应用部署方式:传统部署、虚拟化部署、容器化部署及云原生部署。传统部署直接在物理机上运行程序,存在资源复用难等问题。虚拟化部署通过虚拟机技术实现了资源的有效隔离与利用,但可能会造成性能损失。容器化部署则进一步提升了应用的可移植性和资源利用率,减轻了运维负担。云原生部署结合容器化、微服务等技术,实现了应用的快速迭代、高效运维和灵活扩展,适用于现代互联网应用的开发与部署。每种方式均针对其特点进行了详细的流程描述与优缺点分析。
|
5月前
|
安全 Java 编译器
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
76 18