javaAPI的练习挑战

1.把已知字符串 "a=3.2&b=20&c=1.1" 作为一元二次方程 ax2+bx+c=0 的a、b、c三个参数值的取值描述,并求解此方程的根

/*
完成一个 java application应用程序,把已知字符串(在程序中赋初值或通过键盘输入)
 "a=3.2&b=20&c=1.1" 作为一元二次方程 ax2+bx+c=0 的a、b、c三个参数值的取值描述,并求解此方程的根。
 【提示:利用String类的字符串分离数据的函数,利用Math包中相关数值类的构造函数或数值转换函数】。
 */
public class Demo1 //类名
{
    public static void main(String[] args) {
        String s = "a=3.2&b=20&c=1.1";//定义String类型的变量s用于存储已知字符串
        String[] ss = s.split("&|="); //使用split()将字符串由&或者=进行分割,定义String类型数组ss用于存储分割后的元素
        //定义a,b,c三个变量为float类型
        float a=0;
        float b=0;
        float c=0;
        //遍历数组
        for(int i=0;i< ss.length;i++)
        {
            //当数组元素中有字符串为3.2时,将其转换为float类型赋值给a
            if (ss[i].equals("3.2"))
            {
                a = Float.parseFloat(ss[i]);//使用Float.parseFloat将String类型转换为float类型
            }else if (ss[i].equals("20"))//当数组元素中有字符串为20时,将其转换为float类型赋值给b
            {
                b = Float.parseFloat(ss[i]);//使用Float.parseFloat将String类型转换为float类型
            }
            else if (ss[i].equals("1.1"))//当数组元素中有字符串为1.1时,将其转换为float类型赋值给c
            {
                c = Float.parseFloat(ss[i]);//使用Float.parseFloat将String类型转换为float类型
            }
        }
        //输出a,b,c的值
        System.out.println("a的值为:"+a);
        System.out.println("b的值为:"+b);
        System.out.println("c的值为:"+c);
        //求解ax^2+bx+c=0的根
        double x1=(-b+Math.sqrt(b*b-4*a*c))/(2*a); //使用求根公式求解根x1
        double x2=(-b-Math.sqrt(b*b-4*a*c))/(2*a); //使用求根公式求解根x2
        System.out.println("ax^2+bx+c=0的两个根为:"+"x1="+x1+",x2="+x2);//将求出的根显示出来
    }
}

2.通过键盘输入,输入1则调用运行windows记事本程序,输入2则调用运行windows画图程序……。如下所示:

import java.io.IOException;
import java.util.Scanner;
public class Demo2 //类名
{
        public static void main(String[] args) throws IOException //抛出异常
        {
            Scanner sc=new Scanner(System.in);//从键盘录入数据
            //使用while的死循环
            while(true)
            {
                System.out.print("请输入1或者2或者3");
                int i=sc.nextInt();   //定义int类型变量i接收键盘录入的数据
                if(i==1)  //如果键盘录入为1运行记事本
                {
                    System.out.println("打开记事本");
                    /*
                    Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。
                    一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,
                    但可以通过 getRuntime 方法获取当前Runtime运行时对象的引用。
                    exec()方法返回一个Process对象,可以使用这个对象控制Java程序与新运行的进程进行交互
                     */
                    Process p=Runtime.getRuntime().exec("notepad.exe");//使用exec()方法使用记事本
                }
                else if(i==2)  //如果键盘录入2运行画图
                {
                    System.out.println("打开画图程序");
                    Process p=Runtime.getRuntime().exec("mspaint.exe");//使用exec()方法使用画图程序
                }else if(i==3)//如果键盘录入为3,则退出循环
                {
                    System.out.println("退出");
                    break;
                }
                else  //当输入不是1或者2或者3则重新输入
                {
                    System.out.println("输入错误,请重新输入");
                }
            }
        }
    }

3.输出一份当前所在时区当前时间的一个月的日历(1号到28/29/30/31号,以及每天对应为星期几)。如下所示:

import java.time.LocalDate;

public class Demo4//类名
{
    public static void main(String[] args)
    {
        // 调用LocalDate.now会创建一个新对象,并把对象的日期初始化为当前的日期
        LocalDate day = LocalDate.now();
        System.out.println(day); //得到当前的日期
        int month = day.getMonthValue();//使用getMonthValue方法得到月份
        int today = day.getDayOfMonth();//使用getMonthValue方法得到日
        System.out.println(month +"月"+today);//输入多少月多少日
        //LocalDate minusDays(int n):生成当前日期之前 n 天的日期
        day=day.minusDays(today-1);//这里用today-1就能得到这个月第一天的日期
        int wd=day.getDayOfWeek().getValue(); //使用getDayOfWeek().getValue()得到这个月第一天是星期几的数值
        
        //下面开始打印日历的1~7的七个星期
        System.out.println(" 一   二  三   四  五  六   日");
        for (int i=1;i<wd;i++) {
            //打印前面的空白部分
            System.out.printf("   ");
        }

        while (day.getMonthValue()==month)//如果由日得到的月与今天得到的月相等就表明还在当前月,就执行循环
        {
            System.out.printf("%3d",day.getDayOfMonth());//输出该日是当前月的第几天
            if (day.getDayOfMonth()==today)//当本月得某一天与今天相等时,后面加上*
            {
                System.out.print("*");
            }else{
                System.out.print(" ");//不相等就加上空格
            }
            //执行完一天就将将天数加1
            day=day.plusDays(1);
            //如果是星期一就换行
            if (day.getDayOfWeek().getValue()==1)//判断是否是星期1
            {
                System.out.println();//换行
            }
        }
    }
}

结果如下图所示:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值