Java百题百练

来自CloudWiki
跳转至: 导航搜索

目录

任务一 搭建开发环境及JAVA语言

命令行运行Java程序

请叙述一下在命令提示符窗口运行JAVA应用程序的过程。

Eclipse上运行Java程序

请叙述一下 在Eclipse 上新建一个项目的步骤,并编写程序,打印你的姓名和学号。

格式化输出

请运用Java有关知识,打印商苑面馆的购物小票

任务二 JAVA程序开发基础

汇率计算器

按照IPO流程,编写Java程序,输入人民币数量,根据当天外汇牌价,计算可兑换美元数量。

面馆点餐

商院面馆: 招牌牛肉面和酸梅汤,牛肉面10元/碗,酸梅汤 3元/碗

程序的作用是询问点餐的顾客 点几碗牛肉面 和 几杯酸梅汤,然后在控制台上打印出账单。

求球的表面积

计算球体的表面积和体积。从键盘上输入球的半径,输出球的表面积和体积(1个英文空格隔开)。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

球体表面积是指球面所围成的几何体的面积,它包括球面和球面所围成的空间,球体表面积的计算公式为S=4πr²。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

半径是R的球的体积计算公式是: Python10-23.png。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

参考编程模板,参考输入输出示例,完善程序。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

输入输出示例

 输入 	输出
示例 1 	2 	50.24 33.49

两点间距离公式

两点间距离公式常用于函数图形内求两点之间距离、求点的坐标的基本公式,是距离公式之一。两点间距离公式叙述了点和点之间距离的关系。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

设两个点A、B以及坐标分别为Python10-1003.png,则A和B两点之间的距离为:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

Python10-1002.png ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

请输入4个数字(用空格分隔),分别表示x1、y1、x2、y2, 计算距离(保留2位小数输出)。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

参考编程模板,参考输入输出示例,完善程序。

输入输出示例

 	输入 	输出
示例 1 	1 2 3 4 	2.83
示例 2 	1 1 2 2 	1.14

字符串处理

假设我们从控制台获取的订单用字符串表示为 s=“堂吃_老北京炸酱面+1_口味:辣”),怎样从订单中去提取有用信息 ?

1) 打印字符串s

2)获取字符串s长度

3)为字符串s忽略前导空白和尾部空白

4)获取字符串s中前两个字符(堂吃/外卖)

5)获取字符串最后一个字符(辣/否)

6)替换字符串中的(堂吃/外卖)为(需打包/无需打包)

7)查询字符串中有无“+1”,如有打印信息:“该订单的面量请加1”,否则打印:"该订单正常面量"

8)假设我们用另一个字符串表示已有订单:

 total_s = "堂吃_老北京炸酱面+1_口味:辣 外卖_老济南打卤面+1_口味:否 堂吃_台南蛋仔面+1_口味:辣"

编写代码将字符串s加至已有的字符串total_s后面

9)拆分现在的字符串total_s 打印所有的订单信息

任务四 流程控制语句

密码验证

用if...else语句实现用户登录功能。程序运行时用户输入用户名和密码,然后判断用户名和密码是否均为admin,如果是,则输出“登录成功!”;否则,输出“用户名和密码不正确,登录失败!

判断闰年

输入一个年份,判断它是不是闰年。

闰年是公历中的名词。
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);

成绩录入

从键盘接收用户输入的成绩分数a,如果90<=a<100,输出“该同学的成绩为A”,如果80<=a<90,输出“该同学的成绩为B”,如果60<=a<80,输出“该同学的成绩为C”,如果其他情况,输出“该同学的成绩为D”.

数列的计算

1)编写程序,求101+102+...+200的值

2)编写程序:求1-2+3-4+5-...+99-100的值

3)编写程序,求1+2+4+...+64的值

圆周率的计算

借助图片中的公式,计算pi的值:

Java2020-5-2.png

求水仙花数

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

请利用for循环 打印出所有的水仙花数。

求四位玫瑰数

学员的数量

编写程序解决问题:2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?

猜数字游戏

循环猜数字游戏:程序中设置一个0-100的的数,接收用户输入,如果用户输入的数比这个数大,就提示"你输入的数值偏大",如果用户输入的比这个数小,就提示"您输入的数值偏小",反复进行,直到用户猜对为止。

打印九九乘法表

任务五 使用数组进行存储

菜品评分

商院面馆开通了餐品评分功能,假设餐品一共有5种,评分分别为:4.2,4.8,3.6,5,4.8

请你定义一个数组来存储评分,并打印出最高评分、最低评分、评分个数 和平均得分。

菜品群评

商院面馆开通了餐品评分功能,假设餐品一共有5种,共有3位顾客参与评分,

请你定义一个二维数组来存储评分,并计算出每个餐品的平均得分。

任务六 结构化程序设计

手机话费

某电信公司设计了一个手机话费套餐,套餐价格为58元/月,套餐国内免费通话时长为250min,超出部分按0.25元/min分收费;提供免费流量为50MB,超出部分按0.3元/MB收费,

输入:用户的实际通话时长 和实际数据流量;

输出:该用户本月的实际话费。

任务三 面向对象初步

创建商品类

运行一下“定义Java类”一节后面的代码,完成以下练习:

1)在main中新建一个面条类的对象n2 ,

2)尝试为面条类添加新的属性(口味、重量、颜色等),并打印出面条对象n2的这些属性

3)为为面条类添加两个新方法 更改商品名称的方法setName, 更改数量的方法 setNum ,并为面条对象n2执行这些方法。

创建用户类

1)请问你的项目建立一个用户类User,用来描述用户的信息,并创建一个这个类的对象u1

2)为你的用户类添加至少3个属性(用户名,密码和电子邮箱),并打印出对象u1的这3个属性;为你的用户类添加包括toString方法在内的3个成员方法,如查看密码、修改密码等,并调用对象u1的这些方法。

3)为你的用户类添加2个有参数的构造方法,并分别用这两个构造方法创建新对象u2和u3 ,打印u2和u3的toString信息。

创建银行卡类

创建银行卡类Card,具体要求

(1)Card类包含卡号no、户主名name、余额balance三个私有化成员变量。

(2)提供三个私有化成员变量的getter和setter方法,并满足余额不能小于0。若余额小于0时默认设置为0。

(3)在Card类中重写toString()方法,按“卡号,户主名,余额”格式返回银行卡的详细信息。 例如:620012,李四,3000

(4) 继续创建CardTest测试类,该类中存在main方法。在main方法中实现: ① 用Card的无参构造方法创建一张银行卡card1,然后给card1成员变量赋值,之后再控制台输出card1的详细信息。

任务七 JAVA面向对象编程(二)

商品范围的扩展

现在商院面馆要扩大经营范围,在原有面条产品线的基础上增加了黄焖鸡米饭,请设计米饭类Rice,

1) 该类至少有4个成员变量:名称,价格,数量,大/小份

2)设计针对成员变量价格和数量的读方法和写方法,价格不能小于等于0,数量不能小于0

3)设计该类有参数和无参数的构造方法各一个,

4)在main方法里,用Rice的带参数构造方法创建一份米饭商品r2,然后在控制台输出r2的详细信息

用户类的延伸

已知User类,如何编写它的子类AdminUser ,新增添电话号码的变量 和展示电话号码的方法

答案

任务一 搭建开发环境及JAVA语言

命令行运行Java程序

请叙述一下在命令提示符窗口运行JAVA应用程序的过程。

Eclipse上运行Java程序

请叙述一下 在Eclipse 上新建一个项目的步骤,并编写程序,打印你的姓名和学号。

格式化输出

请运用Java有关知识,打印商苑面馆的购物小票

 * 老北京炸酱面  数量  1   价格 12.00 , 合计12.00

 * 兰州牛肉拉面  数量  2   价格 15.00 , 合计30.00
public class Mianguan {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        System.out.println("商院面馆");
        int n =6;float price=12.0f;
        System.out.printf("老北京炸酱面数量: %d 价格 : %f",n,price);
	}
}

汇率计算器

按照IPO流程,编写Java程序,输入人民币数量,根据当天外汇牌价,计算可兑换美元数量。

面馆点餐

商院面馆: 招牌牛肉面和酸梅汤,牛肉面10元/碗,酸梅汤 3元/碗

程序的作用是询问点餐的顾客 点几碗牛肉面 和 几杯酸梅汤,然后在控制台上打印出账单。

package task2;

import java.util.Scanner;

public class Variable {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//第一步,获得用户输入
		Scanner sc = new Scanner(System.in);
		System.out.print("请问您想点几碗牛肉面:");
		int num1 =sc.nextInt();
		System.out.print("请问您想点几杯酸梅汤:");
		int num2 =sc.nextInt();
		sc.close();
		//第二步,计算账单金额
		float price1=10.0f;float price2 =3.0f;
		float sum = price1*num1+price2*num2;//计算总金额
		//第三步,输出账单金额
        System.out.printf("您点了%d碗牛肉面,%d杯酸梅汤,一共 %.2f元",num1,num2,sum);
	}

}

求球的表面积

计算球体的表面积和体积。从键盘上输入球的半径,输出球的表面积和体积(1个英文空格隔开)。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

球体表面积是指球面所围成的几何体的面积,它包括球面和球面所围成的空间,球体表面积的计算公式为S=4πr²。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

半径是R的球的体积计算公式是: Python10-23.png。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

参考编程模板,参考输入输出示例,完善程序。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

输入输出示例

 输入 	输出
示例 1 	2 	50.24 33.49

两点间距离公式

两点间距离公式常用于函数图形内求两点之间距离、求点的坐标的基本公式,是距离公式之一。两点间距离公式叙述了点和点之间距离的关系。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

设两个点A、B以及坐标分别为Python10-1003.png,则A和B两点之间的距离为:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

Python10-1002.png ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

请输入4个数字(用空格分隔),分别表示x1、y1、x2、y2, 计算距离(保留2位小数输出)。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

参考编程模板,参考输入输出示例,完善程序。

输入输出示例

 	输入 	输出
示例 1 	1 2 3 4 	2.83
示例 2 	1 1 2 2 	1.14

字符串处理

假设我们从控制台获取的订单用字符串表示为 s=“堂吃_老北京炸酱面+1_口味:辣”),怎样从订单中去提取有用信息 ?

1) 打印字符串s

2)获取字符串s长度

3)为字符串s忽略前导空白和尾部空白

4)获取字符串s中前两个字符(堂吃/外卖)

5)获取字符串最后一个字符(辣/否)

6)替换字符串中的(堂吃/外卖)为(需打包/无需打包)

7)查询字符串中有无“+1”,如有打印信息:“该订单的面量请加1”,否则打印:"该订单正常面量"

8)假设我们用另一个字符串表示已有订单:

 total_s = "堂吃_老北京炸酱面+1_口味:辣 外卖_老济南打卤面+1_口味:否 堂吃_台南蛋仔面+1_口味:辣"

编写代码将字符串s加至已有的字符串total_s后面

9)拆分现在的字符串total_s 打印所有的订单信息

任务四 流程控制语句

密码验证

用if...else语句实现用户登录功能。程序运行时用户输入用户名和密码,然后判断用户名和密码是否均为admin,如果是,则输出“登录成功!”;否则,输出“用户名和密码不正确,登录失败!

import java.util.Scanner;

public class Login {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s= new Scanner(System.in);
		System.out.println("请输入用户名:");
		String name=s.next();
		System.out.println("请输入密码:");
		String password=s.next();
		if(name.equals("admin")&&password.equals("admin")){
			System.out.println("登录成功!");}
		else{
			System.out.println("用户名和密码不正确,登录失败!");
			}
		s.close();
		}
	

}

判断闰年

输入一个年份,判断它是不是闰年。

闰年是公历中的名词。
普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);
世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);
package task4;

import java.util.Scanner;

public class RunNian {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
				// TODO Auto-generated method stub
				Scanner s= new Scanner(System.in);
				System.out.println("请输入年份(2001-2099):");
				int year=s.nextInt();
				if(year%100!=0&&year%4==0){
					System.out.println(year+"是闰年");}
				else{
					System.out.println(year+"不是闰年");
					}
				s.close();
				}
			
	

}

成绩录入

从键盘接收用户输入的成绩分数a,如果90<=a<100,输出“该同学的成绩为A”,如果80<=a<90,输出“该同学的成绩为B”,如果60<=a<80,输出“该同学的成绩为C”,如果其他情况,输出“该同学的成绩为D”.

数列的计算

1)编写程序,求101+102+...+200的值

2)编写程序:求1-2+3-4+5-...+99-100的值

3)编写程序,求1+2+4+...+64的值

圆周率的计算

借助图片中的公式,计算pi的值:

Java2020-5-2.png


求水仙花数

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

请利用for循环 打印出所有的水仙花数。

Python:

for n in range(100,200):
    i = n // 100
    j = n // 10 % 10
    k = n % 10
    if n == i ** 3 + j ** 3 + k ** 3:
        print(n)

求四位玫瑰数

Python:

for i in range(1000, 10000):
    t = str(i)
    a=eval(t[0])
    b= eval(t[1])
    c= eval(t[2])
    d=eval(t[3])
    if pow(a,4) + pow(b,4) + pow(c,4)+ pow(d,4) == i :
        print("这是一个玫瑰数:"+str(i))

学员的数量

编写程序解决问题:2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?

猜数字游戏

循环猜数字游戏:程序中设置一个0-100的的数,接收用户输入,如果用户输入的数比这个数大,就提示"你输入的数值偏大",如果用户输入的比这个数小,就提示"您输入的数值偏小",反复进行,直到用户猜对为止。

打印九九乘法表

Python实现:

for i in range(1,10):
    for j in range(1,i+1):
        print("{}*{}={}\t".format(j,i,i*j),end = '')
    print("")

任务五 使用数组进行存储

菜品评分

商院面馆开通了餐品评分功能,假设餐品一共有5种,评分分别为:4.2,4.8,3.6,5,4.8

请你定义一个数组来存储评分,并打印出最高评分、最低评分、评分个数 和平均得分。

菜品群评

商院面馆开通了餐品评分功能,假设餐品一共有5种,共有3位顾客参与评分,

请你定义一个二维数组来存储评分,并计算出每个餐品的平均得分。

任务六 结构化程序设计

手机话费

某电信公司设计了一个手机话费套餐,套餐价格为58元/月,套餐国内免费通话时长为250min,超出部分按0.25元/min分收费;提供免费流量为50MB,超出部分按0.3元/MB收费,

输入:用户的实际通话时长 和实际数据流量;

输出:该用户本月的实际话费。

任务三 面向对象初步

创建商品类

运行一下“定义Java类”一节后面的代码,完成以下练习:

1)在main中新建一个面条类的对象n2 ,

2)尝试为面条类添加新的属性(口味、重量、颜色等),并打印出面条对象n2的这些属性

3)为为面条类添加两个新方法 更改商品名称的方法setName, 更改数量的方法 setNum ,并为面条对象n2执行这些方法。

创建用户类

1)请问你的项目建立一个用户类User,用来描述用户的信息,并创建一个这个类的对象u1

2)为你的用户类添加至少3个属性(用户名,密码和电子邮箱),并打印出对象u1的这3个属性;为你的用户类添加包括toString方法在内的3个成员方法,如查看密码、修改密码等,并调用对象u1的这些方法。

3)为你的用户类添加2个有参数的构造方法,并分别用这两个构造方法创建新对象u2和u3 ,打印u2和u3的toString信息。


public class User {
	public String name;
	public String pwd;
	public String email;
	
	public String getPwd() {
		return this.pwd;
	}
	public void setPwd(String newPwd) {
		this.pwd = newPwd;
	}
	public String toString() {
		return "用户名:"+this.name + " 密码: "+this.pwd + " email "+this.email;
	}
   public User() {
	   
   }
	public User(String n) {
		this.name = n;
	}
	public User(String n,String p,String e) {
		this.name = n;
		this.pwd = p;
		this.email = e;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
       User u1 = new User();
       System.out.println(u1);
       u1.name="maxin";
       u1.pwd="000000";
       u1.email="maxin5452@163.com";
       System.out.println(u1.name);
       System.out.println(u1.getPwd());
       u1.setPwd("111111");
       System.out.println(u1.toString());
       User u2 = new User("小张","222222","zhang@163.com");
       System.out.println(u2.toString());
       
       
	}

}

创建银行卡类

创建银行卡类Card,具体要求

(1)Card类包含卡号no、户主名name、余额balance三个私有化成员变量。

(2)提供三个私有化成员变量的getter和setter方法,并满足余额不能小于0。若余额小于0时默认设置为0。

(3)在Card类中重写toString()方法,按“卡号,户主名,余额”格式返回银行卡的详细信息。 例如:620012,李四,3000

(4) 继续创建CardTest测试类,该类中存在main方法。在main方法中实现: ① 用Card的无参构造方法创建一张银行卡card1,然后给card1成员变量赋值,之后再控制台输出card1的详细信息。

任务七 JAVA面向对象编程(二)

商品范围的扩展

现在商院面馆要扩大经营范围,在原有面条产品线的基础上增加了黄焖鸡米饭,请设计米饭类Rice,

1) 该类至少有4个成员变量:名称,价格,数量,大/小份

2)设计针对成员变量价格和数量的读方法和写方法,价格不能小于等于0,数量不能小于0

3)设计该类有参数和无参数的构造方法各一个,

4)在main方法里,用Rice的带参数构造方法创建一份米饭商品r2,然后在控制台输出r2的详细信息

用户类的延伸

已知User类,如何编写它的子类AdminUser ,新增添电话号码的变量 和展示电话号码的方法