JAVA练习题05

本文包含三个编程问题的解决方案:寻找特定条件的完全平方数、计算一年中某日期的位置以及按顺序输出三个整数。第一个问题通过遍历并检查平方根的整数性质来解决;第二个问题通过逐月累加天数判断日期,考虑了闰年的情况;第三个问题通过比较整数大小直接输出排序。这些代码示例展示了基础算法和条件判断在编程中的应用。
摘要由CSDN通过智能技术生成
package s1;
//题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
public class Fs13 {
    public static void main(String[] args) {
        double k=0;
        for (double a=0;a<100000;a++)
        { double b=Math.sqrt(a+100);
         double c=Math.sqrt(a+256);
         if (b%2==0&&c%2==0){
         k=a;
         }
        }
        System.out.println(k);
    }
}

 其他写法

public static void main(String[] args) { for (inti = 0; i <10000;i++) { intnum1=(int)Math.sqrt(i+100);//开方,值已固定了 intnum2=(int)Math.sqrt(i+268); if ((num1*num1==(i+100))&&(num2*num2==(i+268))) {//符合条件的打印出来 System.out.println(i+" "); } } }

package s1;

import java.util.Scanner;

//题目:输入某年某月某日,判断这一天是这一年的第几天?
//分析 //(1 3 5 7 8 10 12腊  31天永不差  2月28天  4 6 9 11月30)
public class Fs14 {
    public static void main(String[] args) {
//        int m2 = 0, k = 0, s = 0,
               int d2 = 0;
        System.out.println("请输入年份");
        Scanner y = new Scanner(System.in);
        int y1 = y.nextInt();
        System.out.println("请输入月份");
        Scanner m = new Scanner(System.in);
        int m1 = m.nextInt();
        System.out.println("请输入天");
        Scanner d = new Scanner(System.in);
        int d1 = d.nextInt();
        if (m1<=12&&m1>=1){
        if (m1==1){
            if (d1 >= 1 && d1 <= 31) {
                    d2 = d1;
        }else {
                System.out.println("请输入正确的日期");
               }
      }
        if (m1==2){
            if (d1 >= 1 && d1 <= 28) {
                d2 = 31+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }
        if (m1==3){
            if (d1 >= 1 && d1 <= 31) {
                d2 = 31+28+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }
        if (m1==4){
            if (d1 >= 1 && d1 <= 30) {
                d2 = 31+28+31+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }
        if (m1==5){
            if (d1 >= 1 && d1 <= 31) {
                d2 = 31+28+31+30+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }
        if (m1==6){
            if (d1 >= 1 && d1 <= 30) {
                d2 = 31+28+31+30+31+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }if (m1==7){
            if (d1 >= 1 && d1 <= 31) {
                d2 = 31+28+31+30+31+30+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }if (m1==8){
            if (d1 >= 1 && d1 <= 31) {
                d2 = 31+28+31+30+31+30+31+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }if (m1==9){
            if (d1 >= 1 && d1 <= 30) {
                d2 = 31+28+31+30+31+30+31+31+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }if (m1==10){
            if (d1 >= 1 && d1 <= 31) {
                d2 = 31+28+31+30+31+30+31+31+30+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }if (m1==11){
            if (d1 >= 1 && d1 <= 30) {
                d2 = 31+28+31+30+31+30+31+31+30+31+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }if (m1==12){
            if (d1 >= 1 && d1 <= 31) {
                d2 = 31+28+31+30+31+30+31+31+30+31+30+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        }}else {
            System.out.println("请输入正确的月份");
        }
        System.out.println("该日期为一年中的第:"+d2+"天");
   }
}

错误思路

//        int m1=m3+1;
//        for ( m1=1;m1<=13;m1++) {
//            if (m1 == 2) {
//                m2 +=28;
//                if (d1 >= 1 && d1 <= 28) {
//                     d2 = m2+d1;
//                     break;
//                } else {
//                    System.out.println("请输入正确的日期");
//                }
//            } else if (m1 == 4 || m1 == 6 || m1 == 9 || m1 == 11) {
//                m2 += 30;
//                if (d1 >= 1 && d1 <= 30) {
//                    d2 = m2+d1;
//                    break;
//                } else {
//                    System.out.println("请输入正确的日期");
//                }
//            } else {
//                m2+= 31;
//                if (d1 >= 1 && d1 <= 31) {
//                    d2 = m2+d1;
//                    break;
//                } else {
//                    System.out.println("请输入正确的日期");
//                }
//            }
        if (m1>=1&&m1<=12){          //(1 3 5 7 8 10 12腊  31天永不差  2月28天  4 6 9 11月30)
            if (d1>=1&&d1<=31){
                int d2=365/12*m1+d1;
            }else {
                System.out.println("请输入正确的日期");
            }
        System.out.println((365/12*m1+d1));}else {
            System.out.println("请输入正确的月份");
        }
//            k+=m2;
//            s=m2+d2;
//
//        }
//        System.out.println(d2);
//    }
//}

其他写法

程序分析:以3月5日为例,应该先把前两个月的加起来

 ,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

  闰年的条件:year除以400能整除,或者year除以4能整除,但是不能是100的倍数

public class Programme14 {

public static void main(String[] args) {

   System.out.println("请输入年月日(用空格隔开):");

   Scanner scanner=new Scanner(System.in);

   int year=scanner.nextInt();//获取年份

   int month=scanner.nextInt();//获取月份

   int day=scanner.nextInt();//获取天数

   int sum=0;//天数总和

   //创建一个包含月份天数的数组,先按小年计算,如果是闰年,并且在三月以后再加1

   int[] arr={31,28,31,30,31,30,31,31,30,31,30,31};

   sum=day;//输入的天数肯定是要加的

   for (inti = 1; i < month; i++) {  //加上包含的月份天数

       sum+=arr[i];

   }

   //最后判断是否是闰年,如果是的话再加1,否则sum就是结果了,条件比较长,我就抽出来写了

   booleanisRight=(((year%4==0)&&(year%100!=0))||(year%400==0))&&(month>2);

   if (isRight) {

       sum+=1;

   }

   System.out.println(year+"年"+month+"月"+day+"日,是这年的第"+sum+"天");

}

import java.util.Scanner;

public class Fs15 {
//    题目:输入三个整数x,y,z,请把这三个数由小到大输出。
public static void main(String[] args) {
    System.out.println("请输入三个整数");
    Scanner a = new Scanner(System.in);
    int x =a.nextInt();
    int y = a.nextInt();
    int z = a.nextInt();
   if (z>y&&y>x){
            int max=z,mid=y,min=x;
            System.out.println("最小"+min+"中间"+ mid +"最大"+max);
    }
    if (z>y&&x>y){
        int max=z,mid=x,min=y;
        System.out.println("最小"+min+"中间"+ mid +"最大"+max);
    }
    if (y>x&&x>z){
        int max=y,mid=x,min=x;
        System.out.println("最小"+min+"中间"+ mid +"最大"+max);
    }
    if (y>x&&z>x){
        int max=y,mid=z,min=x;
        System.out.println("最小"+min+"中间"+ mid +"最大"+max);
    }
    if (x>y&&y>z){
        int max=x,mid=y,min=z;
        System.out.println("最小"+min+"中间"+ mid +"最大"+max);
    }
    if (x>y&&z>y){
        int max=x,mid=z,min=y;
        System.out.println("最小"+min+"中间"+ mid +"最大"+max);
    }
}
}

其他写法:

public class Programme15 {

public static void main(String[] args) {

   System.out.println("三个整数:");

   Scanner scanner=new Scanner(System.in);

   int num1=scanner.nextInt();//获取整数

   int num2=scanner.nextInt();

   int num3=scanner.nextInt();

   int temp=0;//最为一个交换数

   if (num1>num2) {//保证num2>num1

       temp=num1;

       num1=num2;

       num2=temp;

   }

   if (num1>num3) {//保证num3>num1

       temp=num1;

       num1=num3;

       num3=temp;

   }

   if (num2>num3) {//保证num3>num2

       temp=num2;

       num2=num3;

       num3=temp;

   }

   System.out.println("这三个数从小到大排列:"+num1+"  "+num2+"  "+num3);

   scanner.close();

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值