思考练习题

2023-05-16

1.循环求和:利用循环语句计算从100加到500的整数的总和。

public static void main(String[] args) {
        int sum = 0;
        for(int i=100;i<=500;i++) {
            sum = sum + i;
        }
        System.out.println("100到500的和为"+sum);
    }

2.字符判断:从键盘输入一个字符,判断这个字符是数字,大写字母,小写字母,还是特殊符号(提示:利用ASCII码对字符类型进行判断,Java中的字符串的方法charAt(0)可。以获取该字符串中的第一个字符)

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        
        System.out.println("请输入一个字符");
        String str=sc.next();
        
        //获取字符串中的字符
        char c=str.charAt(0);
        
        if(c>=48 && c<=57) {//数字
            System.out.println(c+"是一个数字");
        }else if(c>=65 && c<=90) {//大字母
            System.out.println(c+"是一个大写字母");
        }else if(c>=97 && c<=122) {//小字母
            System.out.println(c+"是一个小写字母");
        }else {
            System.out.println(c+"是个符号");
        }

3.水仙花数:计算三位整数(100-999)的水仙花数。水仙花数是指每一位的立方相加等于该数自己,比如153=1^3+5^3+3^3。(提示:从100循环到999是一个三位数,将其百位数,十位数拆分出来即可,可以利用%取余和/除法进行相关计算。也可以利用三重循环将数字0-9拼出来一个三位数)

public static void main(String[] args) {
        //获取三位数(100-999)上的每位数字
        for(int i=100;i<1000;i++) {
            int a=i/100; //获取百位上的数字
            int b=i%100/10; //获取十位上的数字
            int c=i%100%10; //获取各位上的数字
            
            if(a*a*a+b*b*b+c*c*c==i) {
                System.out.println(i);
            }
        }
    }

4.次方计算:计算X的Y次方,X(底数)和Y(指数)的值由用户输入,只考虑指数为整数的情况,注意各种可能的情况都要考虑周到。(提示:不要使用Java内置的方法Math.pow(x,y)进行运算)

方法一:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.println("请输入底数");
        int d = sc.nextInt();
        
        System.out.println("请输入指数");
        int c = sc.nextInt();

        结果变量
        long result = 1;//相乘
        if(c>=0) {
            //进行的是正整数的处理
            for(int i=1; i<=c; i++) {//通过循环,让底数乘以几次
                
                result = result*d;
            }
            System.out.println(d+"的"+c+"次方是:"+result);
        }else {
            
            for(int i=1; i<=0-c; i++) {
                result = result*d;
            }
            //1.0把类型变为double类型
            System.out.println(d+"的"+c+"次方是:"+(1.0/result));
            System.out.println(d+"的"+c+"次方是:1/"+result);
        }

方法二:

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.println("请输入底数");
        int d = sc.nextInt();
        
        System.out.println("请输入指数");
        int c = sc.nextInt();

        double result = 1.0;//相乘
        //获取绝对值,正数还是正数,负数变为正数
        int len = Math.abs(c);
        
        for(int i=1; i<=len; i++) {
            result =result*d;
        }
        
        //当初输入的指数是?
        
        if(c>0) {
            //System.out.println(d+"的"+c+"次方是:"+result);
            result=result;
        }else {
            //System.out.println(d+"的"+c+"次方是:"+(1.0/result));
            result=(1.0/result);
        }
        System.out.println(d+"的"+c+"次方是:"+result);
    }

5.统计字符:从键盘输入一个字符串,统计这个字符串中包含几个大写字母,几个小写字母,几个数字,几个特殊符号。

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.println("请输入字符串");
        String str = sc.next();
        
        //申明存放大写、小写、数字和特殊符号出现次数变量
        int upSum=0;
        int lowSum=0;
        int numSum=0;
        int otherSum=0;
        
        //获取字符串的每个字符
        for(int i=0;i<str.length();i++) {
            
            char c =str.charAt(i);//获取指定位置的字符
            if(c>=48 && c<=57) {
                ++numSum;
            }
            else if(c>=65 && c<=90){
                upSum++;
            }else if(c>=97 && c<=122) {
                lowSum++;
            }else {
                otherSum++;
            }
        }
        System.out.println("大写字母个数:"+upSum);
        System.out.println("小写字母个数:"+lowSum);
        System.out.println("数字个数:"+numSum);
        System.out.println("特殊个数:"+otherSum);
    }

6.组合问题:有红球5个,黑球7个,白球9个,随机取出12个,计算可能的颜色组合有多少种?

public static void main(String[] args) {
        
        int count = 0;//组合成功的个数
        for(int red=0; red<=5; red++) {//红球出现的个数
            
            for(int black=0; black<=7; black++) {//黑球出现的个数
                
                for(int white=0; white<=9; white++) {//白球出现的个数
                    if(red+black+white==12) {
                        System.out.println("红球:"+red+"黑球:"+black+"白球:"+white);
                        
                    }
                    count++;
                }
                
            }
            System.out.println("组合成功的个数:"+count);
        }
    }
 

7.抓球问题:用一元纸币兑换1分,2分和5分的硬币,要求兑换总数为50枚,问可以有多少种组合,每种组合对应1分,2分,5分分别是多少

public class test_10 {
    public static void main(String[] args) {
        
        int count=0;
            for(int j=0; j<=50; j++) {//最多可以有50个2分
                for(int k=0; k<=20; k++) {//最多可以有20个5分
                    for(int i=0; i<=50-j-k; i++)//1分的个数由2分和5分来确定
                    if(i+j*2+k*5==100) {
                        System.out.println("这种组合对应的1分是"+i+"个,"+"2分是"+j+"个,"+"5分是"+k+"个。");
                    }
                    count++;
                    
                }
            }
        
        
        System.out.println("可以有"+count+"种组合");
        
        
    }

8.九九乘法表:尝试用for循环完成九九乘法表输出。(提示:可以使用双重循环,内层循环的次数受外层循环变量影响)

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();//换行
        }  
      }
 

9.价格猜猜猜:随机产生一个200以内的价格,并且让用户猜测该价格,如果比实际价格高,则输出“高了”,否则输出“低了”,直到猜对为止,输出“对了”,程序结束。(使用Math.random()可生成一个0-1之间的随机小数)。

public class test06 {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        
        //[0,1)的浮点数 产生出来的是double
        double num=Math.random();
        //System.out.println(num);
        
        int cNum=(int)(num*200);//真实的数字
        System.out.println(cNum);
        
        int price =0;
        
        do {
            System.out.println("请输入价格");
             price =sc.nextInt();
            if(cNum>price) {
                System.out.println("低了");
            }else if(cNum<price){
                System.out.println("高了");
            }else {
                System.out.println("对了");
            }
        }while(cNum!=price);
    }

10。继续完善上述第9题代码,只给用户猜测5次的机会,如果5次都没有回答正确,则判定用户“超时,输了”。

public static void main(String[] args) {
            Scanner sc =new Scanner(System.in);
            
            //[0,1)的浮点数 产生出来的是double
            double num=Math.random();
            //System.out.println(num);
            
            int cNum=(int)(num*200);//真实的数字
            System.out.println(cNum);
            
            int price =0;
            
            for(int i=0; i<5; i++) {
                System.out.println("请输入价格");
                 price =sc.nextInt();
                if(cNum>price) {
                    System.out.println("低了");
                }else if(cNum<price){
                    System.out.println("高了");
                }else {
                    System.out.println("对了");
                    //直接退出程序
                    System.exit(-1);
                }
            }
            System.out.println("超时了");
        }

11.字符串判断:从键盘输入一个字符串,判断该字符串是否可以被转换为一个有效的数字

//输入一个字符串,判断是否可以转为有效数字
//1.只能出现一个+或者-或者.
//2.约束
//3.+ -只能出现在第一个位置
//4..只能一次,(只能在符号之后
)
public class test_08 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        String str=sc.next();
        
        //标记是否可以转为数字的有个变量
        boolean isNumber = true;//能转为数字
        //标记.出现的次数
        int pointCount=0;
        
        //得到每个字符 
        for(int i=0;i<str.length(); i++) {
            //得到i标记处的字符
            char c=str.charAt(i);
            if((c=='+'||c=='-') && i==0) {//判断是+或者-符号
                continue;//结束本次循环,进行下次
            }else if(c=='.') {
                pointCount++;
                if(pointCount<=1) {
                    continue;//结束本次循环,进行下次
                }else {
                    isNumber=false;
                    break;
                }
            }
            
            if(!(c>=48 && c<=57)) {
                isNumber=false;//当不是字符,给标记 量赋值为false,并跳出循环
                break;
            }
        }
        
        String out =isNumber?"能转化为数字":"不能转为数字";
        
        System.out.println(str+out);
    }
}
 

12.将上述代码写在不同的方法中,并通过main()方法进行调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

思考练习题 的相关文章

  • Ubuntu 上使用hexo+github打造个人blog

    最近一段时间想要搭建个人的blog xff0c 然后好好写博客 在网上大致看了下 xff0c 一致的推荐hexo来搭建个人blog xff0c 而且可以通过github挂载在公网上去 xff0c 由于个人使用的Ubuntu 16 04 xf
  • 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫 xff0c 本人还是入门级的小白 xff0c 自己跟着老师写了一些代码 xff0c 算是自己的总结 xff0c 还有一些心得 xff0c 跟大家分享一下 xff0c 如果不当 xff0c 还请各位前辈斧正 这是代码 xff1
  • 非常详细的范式讲解(1NF/2NF/3NF/BCNF)

    范式 范式在计算机方面运用广泛 xff0c 在计算机二级三级均有涉及到 xff0c 今天就来讲讲范式 要是能够认真的看完 xff0c 相信一定能够理解的 在讲范式之前 xff0c 我们先来了解有关范式的基本概念 xff0c 听懂了有利于后面
  • ubuntu18.04无法安装libesd0-dev完美解决办法

    ubuntu18 04无法安装libesd0 dev 解决办法 解决办法 span class token comment 在行尾添加如下一行的内容 span span class token function sudo span vim
  • SystemUI学习记录

    OS android 7 1 由于项目需要需要对SystemUI进行定制化 xff0c 需求比较紧急 xff0c 没有很深入的去了解其整体代码 xff0c 仅仅记录下我的用到修改记录如下 xff1a 目录中有 或者 由于在不同的系统环境拷贝
  • informer

    list watch机制 list watch有两部分组成 xff0c 分别是list和watch list非常好理解 xff0c 就是调用资源的list API罗列资源 xff0c 基于HTTP短链接实现 xff1b watch则是调用资
  • kubelet - container manager

    containerManager 负责 node 节点上运行的容器的配置信息 xff0c 如 cgroup cpu device xff1b pod的创建流程参考 xff1a http www tianfeiyu com p 61 2825
  • 理解TCP/IP网络通信原理

    为什么会有TCP IP协议 在世界上各地 xff0c 各种各样的电脑运行着各自不同的操作系统为大家服务 xff0c 这些电脑在表达同一种信息的时候所使用的方法是千差万别 就好像圣经中上帝打乱了各地人的口音 xff0c 让他们无法合作一样 计
  • python 正则表达式点号与'\n'符号的问题

    匹配除了制表符和换行符之外的所有字符 前面的元字符出现任意次 xff0c 含0 43 前面的元字符出现一次或多次 xff1f 非贪婪模式 re S可以匹配多行 S s 匹配所有字符 所以 可以使用 s S 取代 在Python中可以使用方法
  • virsh的使用与实例步骤安装虚拟机

    Libvirt 有两种控制方式 xff0c 命令行和图形界面 图形界面 xff1a 通过执行名 virt manager xff0c 启动 libvirt 的图形界面 xff0c 在图形界面下可以一步一步的创建虚拟机 xff0c 管理虚拟机
  • Jboss低版本项目热部署到Jboss7

    Jboss低版本项目热部署到Jboss7 1 Jboss7 新特性 1 1 构建在 Modular Service Container上 xff0c 充分地利用了多核处理器的能力 xff0c 并发 按需启动服务 xff0c 启动速度更快 占
  • devstack安装openstack

    devstack是一套用来给开发人员快速部署Openstack开发环境的脚本 xff0c 其实对于整个安装过程没有什么好说的 xff0c 因为脚本写的很完善 xff0c 全程无脑式安装也没什么大问题 xff0c 但是因为公司里的网络环境不给
  • RBAC vs ABAC

    K8s在1 3版本中发布了alpha版的基于角色的访问控制 xff08 Role based Access Control xff0c RBAC xff09 的授权模式 相对于基于属性的访问控制 xff08 Attribute based
  • Attach detach controller manager 流程

    一 xff1a 初始化 1 adc 调用 InitPlugins 初始化 volumeplugins 1 1 初始化 dynamicplugins Currentlyonly Flexvolume plugins are dynamical
  • 洗牌、发牌算法 (打乱扑克牌顺序)

    img alt src https img blog csdn net 20130504122806254 include lt stdio h gt include lt stdlib h gt include lt time h gt
  • X11,GTK,QT,GNOME的区别与联系(UI工具总结)

    1 X11是X Window System Protocol Version 11 xff08 RFC1013 xff09 xff0c 是X server和X client之间的通信协议 X server是xfree86 xorg驱动下的显
  • Metrics-server

    概述 从 v1 8 开始 xff0c 资源使用情况的监控可以通过 Metrics API的形式获取 xff0c 具体的组件为Metrics Server xff0c 用来替换之前的heapster xff0c heapster从1 11开始
  • ARM嵌入式开发板无法ping localhost的问题

    移植环境 红色粗字体字 为修改后内容 xff0c 蓝色粗体字 为特别注意内容 1 xff0c 开发板 xff1a 韦东山JZ2440 2 xff0c linux 版本 xff1a linux 3 4 2 3 xff0c 参考文献 xff1a
  • Ali-Wax使用和源码解析系列-Wax的集成和调试环境搭建

    那些多余的话 在ios平台的基础框架中 xff0c 代码的直接动态部署一直是一个无法解决的问题 xff0c 所以我们只能退而求其次 xff0c 通过建立脚本语言和OC的bridge来实现动态更新的目标 在这个方向上 xff0c wax lu

随机推荐