学习笔记01从零开始学java-第二章课后习题

学习笔记01-第二章

第一章的编程练习比较简单,所以在此略过。用的书为孙连英,刘畅,彭涛所著的Java面向对象程序设计。
我的所有代码你都可以通过GitHub获取,
以下为我的GitHub地址:[https://github.com/MrNeoJeep/java-code.git]
(https://github.com/MrNeoJeep/java-code.git)

第二章编程练习

(1)编写程序,提示用户输入一个小数,然后输出与该数最接近的整数

代码

import java.util.Scanner;
public class Text2_1 {
    
    

	public static void main(String[] args) {
    
    
		//编写程序,提示用户输入一个小数,然后输出与该数最接近的整数
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个小数");
		float num = sc.nextFloat();
		int num_int = (int)num;
		float temp = num - num_int;
		sc.close();
		if(temp == 0.5)
		{
    
    
			System.out.println(num_int);
			System.out.println(num_int+1);
		}
		else if(temp < 0.5)
		{
    
    
			System.out.println(num_int);
		}
		else
		{
    
    
			System.out.println(num_int+1);
		}
	}

运行结果

在这里插入图片描述

(2)编写程序。提示用户输入一个4位正整数,该程序以每行一个数字输出该数。

代码

import java.util.Scanner;
public class Text2_2 {
    
    

	public static void main(String[] args) {
    
    
		//编写程序。提示用户输入一个4位正整数,该程序以每行一个数字输出该数。
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个四位数");
		int num = sc.nextInt();
		sc.close();
//		System.out.println(num/1000);
//		num %= 1000;
//		System.out.println(num/100);
//		num %= 100;
//		System.out.println(num/10);
//		num %= 10;
//		System.out.println(num/1);
		int i = 1000;
		while(i >= 1)
		{
    
    
			System.out.println(num/i);
			num %=i;
			i /=10 ;
		}
	}

运行结果

在这里插入图片描述

(3)编写程序,分写获得一个数的整数和小数部分

代码

使用三种方法实现

import java.util.Scanner;
public class Text2_3 {
    
    

	public static void main(String[] args) {
    
    
		//编写程序,分写获得一个数的整数和小数部分
		Scanner sc = new Scanner(System.in);
		System.out.print("请输入一个小数:");
		float num = sc.nextFloat();
		sc.close();
		if(num > 0)
		{
    
    
		//方法一直接强转,会出现小数部分不准的问题,估计是二进制转换时存在的问题
	//		int num_int = (int)num;
	//		float num_float = num - num_int;
	//		System.out.println(num+"的整数部分为:"+num_int);
	//		System.out.println(num+"的小数部分为:" + num_float);
			//System.out.printf("%.2f",num_float);
			//方法二:字符串的分割
//			String str = String.valueOf(num);
//			String[] array = str.split("\\.");
//			System.out.println(num +"的整数部分:" + array[0]);
//			System.out.println(num + "的小数部分:0." + array[1]);
			//方法三:索引
			String str = String.valueOf(num);
			int pointIndex = str.indexOf('.');
			System.out.println(num +"的整数部分:" + str.substring(0,pointIndex));
		    System.out.println(num + "的小数部分:0" + str.substring(pointIndex,str.length()));
		}
		else if(num < 0)
		{
    
    
			num = - num;
			String str = String.valueOf(num);
			String[] array = str.split("\\.");
			System.out.println(num +"的整数部分:-" + array[0]);
			System.out.println(num + "的小数部分:-0." + array[1]);
		}
		else
		{
    
    
			System.out.println("输入有误");
		}

	}

运行结果

在这里插入图片描述

(4)猜测两数之和

代码

import java.util.Scanner;
public class Text2_4 {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请分别输入两个数,以逗号分隔");
		String num = sc.next();
		String []arr = num.split("\\,");
		int num1 = Integer.parseInt(arr[0]);
		int num2 = Integer.parseInt(arr[1]);
		System.out.println("请猜测这两数之和:");
		int num3 = sc.nextInt();
		if(num3 == num1 + num2)
		{
    
    
			System.out.println("恭喜你,猜对了");
		}
		else
		{
    
    
			System.out.println("别灰心,正确答案是:" + (num1 + num2));
		}
		sc.close();
	}

运行结果

在这里插入图片描述

(5)甲乙两个人打赌,看谁赚的钱多

甲乙两个人打赌,看谁赚的钱多。甲承诺每天每天给乙1000块钱,乙承诺第一题给甲1分钱,第二题两分钱。第三天4分钱……,30天后谁赢。

代码

public class Text2_5 {
    
    

	public static void main(String[] args) {
    
    
		//甲乙两个人打赌,看谁赚的钱多。甲承诺每天每天给乙1000块钱,乙承诺第一题给甲1分钱,第二题两分钱
		//第三天4分钱……,30天后谁赢
		//num1为甲赚的钱,num2为乙赚的钱
		int num1;
		int num2;
		num2 = 1000*30;
		num1 = 1;
		int temp = 0;
		for(int i = 0 ;i < 30; i++)
		{
    
    
			temp += num1;
			num1 *= 2;
		}
		double temp1 = (double)temp;
		double num1_res = temp1 / 100;//换算成元
		boolean flag = true;
		flag = num1_res > num2?true:false;
		//测试
//		System.out.println(num1);
//		System.out.println(num2);
//		System.out.println(temp1);
		
		if(num1_res == num2)
		{
    
    
			System.out.println("两者一样");
			return;
		}
		if(flag)
		{
    
    
			System.out.println("甲赢了");
		}
		else
		{
    
    
			System.out.println("乙赢了");
		}

	}

运行结果

在这里插入图片描述

(6)设计一个自动售货机

代码

import java.util.Scanner;

public class Text2_6 {
    
    

	public static void main(String[] args) {
    
    
		//自动售货机
		System.out.println("[1] 口香糖");
		System.out.println("[2] 巧克力");
		System.out.println("[3] 爆米花");
		System.out.println("[4] 果汁");
		System.out.println("[5] 显示购买总数");
		System.out.println("[6] 退出");
		System.out.println("自助售卖机欢迎你!!!");
		Scanner sc = new Scanner(System.in);
		int num1 = 0;
		int num2 = 0;
		int num3 = 0;
		int num4 = 0;
		boolean flag = true;
		while(flag)
		{
    
    
			System.out.println("请选择编号购买商品:");
			int key = sc.nextInt();
			switch (key) {
    
    
			case 1:
				System.out.println("您购买了口香糖");
				num1++;
				break;
			case 2:
				System.out.println("您购买了巧克力");
				num2++;
				break;
			case 3:
				System.out.println("您购买了爆米花");
				num3++;
				break;
			case 4:
				System.out.println("您购买了果汁");
				num4++;
				break;
			case 5:  //显示购物清单
				if(num1 != 0)
				{
    
    
					System.out.println("您购买了" + num1 + "个口香糖");
				}
				if(num2 != 0)
				{
    
    
					System.out.println("您购买了" + num2 + "个巧克力");
				}
				if(num3 != 0)
				{
    
    
					System.out.println("您购买了" + num3 + "桶爆米花");
				}
				if(num4 != 0)
				{
    
    
					System.out.println("您购买了" + num4 + "杯果汁");
				}
				break;
			case 6:
				flag = false;
				System.out.println("欢迎下次使用!");
				sc.close();
				break;
			
			}
		}	
	}

运行结果

在这里插入图片描述
在这里插入图片描述

(7)编写程序,提示用户输入笛卡尔平面中某一点的x-y坐标

代码

import java.util.Scanner;
public class Text2_7 {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个坐标,用逗号分隔:");
		String num = sc.next();
		String []arr = num.split(",");
		int x = Integer.parseInt(arr[0]);
		int y = Integer.parseInt(arr[1]);
		if(x == 0 && y == 0)
		{
    
    
			System.out.println("此点位于原点");
		}
		else if(x == 0)
		{
    
    
			System.out.println("此点位于y轴");
		}
		else if(y == 0)
		{
    
    
			System.out.println("此点位于x轴");
		}
		else if(x > 0 && y > 0)
		{
    
    
			System.out.println("此点位于第一象限");
		}
		else if(x > 0 && y < 0)
		{
    
    
			System.out.println("此点位于第四象限");
		}
		else if(x < 0 && y > 0)
		{
    
    
			System.out.println("此点位于第二象限");
		}
		else if(x < 0 && y < 0)
		{
    
    
			System.out.println("此点位于第三象限");
		}
	}

运行结果

在这里插入图片描述

写在最后,如果你对于以上问题有更好的解答,请在评论区告诉我。

猜你喜欢

转载自blog.csdn.net/qq_50195602/article/details/114640264