学习笔记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("此点位于第三象限");
}
}
运行结果
写在最后,如果你对于以上问题有更好的解答,请在评论区告诉我。