思考练习题

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()方法进行调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值