题1:
//一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同
//十位与千位相同
//一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同
//十位与千位相同
public class HomeWork01{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请输入一个5位数:");
int num = s.nextInt();
int wan = num/10000;
//System.out.print("w="+wan);
int qian = (num-wan*10000)/1000;
int bai = (num-(wan*10000+qian*1000))/100;
int shi = (num-(wan*10000+qian*1000+bai*100))/10;
int ge = (num-(wan*10000+qian*1000+bai*100+shi*10));
boolean b = false;
if(wan == ge & qian == shi){
b = true;
}
System.out.print(num + (b ? "是" : "不是") + "回文数");
}
}
习题2
//猴子吃桃问题,猴子第一天摘下若干桃子。当即吃了一半,还不过瘾,又多吃了一个
//第二天早上又将剩下的桃子吃掉一半,由多吃一个,以后每天早上都吃前一天剩下
//的一半零一个,到第十天早上再吃时,只剩下一个了,求第一天摘了多少桃子?
//猴子吃桃问题,猴子第一天摘下若干桃子。当即吃了一半,还不过瘾,又多吃了一个
//第二天早上又将剩下的桃子吃掉一半,由多吃一个,以后每天早上都吃前一天剩下
//的一半零一个,到第十天早上再吃时,只剩下一个了,求第一天摘了多少桃子?
public class HomeWork02{
public static void main(String[] args){
int num = 1;//最后一只桃子逆推
//第10天吃的时候就一个意思是第9天吃完就剩一个了
int day = 9;//吃了9天
while(day > 0){
day--;
num = (num + 1) * 2;
//System.out.println(num);
}
System.out.println("第一天摘了" + num + "桃子");//1534
//PS:猴子真会吃。。。
}
}
习题3
//计算1! + 2! + 3! + … + 10!
//注意 4!= 432*1
//计算1! + 2! + 3! + .... + 10!
//注意 4!= 4*3*2*1
public class HomeWork03{
public static void main(String[] args){
int sum = 0;//定义和
//定义外侧循环从1到10
for(int i = 1; i <= 10; i++){
int jcs = 1;//定义阶乘数
for(int j = i ; j > 0; j--){//定义内圈阶乘
jcs *= j;
}
sum += jcs;
}
System.out.println("和为:" + sum);//4037931
}
}
习题4
//一球从100m高度落下,每次落地后反复跳回原高度的一半再落下,求它在
//第10次落地时,共经过多少米
//一球从100m高度落下,每次落地后反复跳回原高度的一半再落下,求它在
//第10次落地时,共经过多少米
public class HomeWork04{
public static void main(String[] args){
double sum = 100;//第一次下落先给定,后面下落9次。
double high = 100;//初始高
for(int count = 1; count < 10; count++){
//假设从0点弹起,每次弹起高度为先前的一半
high /= 2;//弹起一次共9次
sum += 2*high;//弹起上升和下落
}
System.out.println(sum);//299.609375
}
}
习题5
//一个四位数,恰好等于去掉它的首位数字之后所剩的三位数的3倍,这个数是多少?
//一个四位数,恰好等于去掉它的首位数字之后所剩的三位数的3倍,这个数是多少?
public class HomeWork05{
public static void main(String[] args){
for(int num = 1000; num <= 9999; num++){
int qian = num/1000;
if(num == (num-qian*1000)*3){
System.out.println("该数为:" + num);//1500
}
}
}
}
又来做数学题了
6.23关于方法的一道练习题。
//给一个正整数n求大于n的最小质数
//给一个正整数n求大于n的最小质数
public class HomeWork01{
public static void main(String[] args){
minZhiShu(100);
}
public static void minZhiShu(int n){
for(int i = n+1; ; ){
for(int j = 2; j < i; j++){
if(i % j == 0){
i++;
}
System.out.println("大于n的最小质数:" + i);
return;
}
}
}
}
7月5日
写一个Account类的模拟账户
该类的属性:账户id ,余额 balance 年利率 1.23%
方法:各属性的set和get方法,取款方法withraw(),存款方法deposit()
/*写一个Account类的模拟账户
该类的属性:账户id ,余额 balance 年利率 1.23%
方法:各属性的set和get方法,取款方法withraw(),存款方法deposit()
*/
public class Account{
private int id;
double balance;
String annualInterestRate;
public Account(){
}
public Account(int i, double b, String a){
id = i;
balance = b;
annualInterestRate = a;
}
public int getId(){
return id;
}
public void setId(int i){
id = i;
}
public double getBalance(){
return balance;
}
public void setBalance(double b){
balance = b;
}
public String getAnnualInterestRate(){
return annualInterestRate;
}
public void setAnnualInterestRate(String a){
annualInterestRate = a;
}
//取款
public void withraw(double m){
if(balance > m){
balance -= m;
System.out.println("成功取出:" + m);
}else{
System.out.println("余额不足,取钱失败!");
}
}
public void deposit(double m){
balance += m;
System.out.println("成功存入:" + m);
}
}
/*写一个测试程序
1.创建customer,名字叫Jane Smith
.......不打了太累了。
*/
public class Customer{
String name;
Account account;
public static void main(String[] args){
Customer c = new Customer();
Account a = new Account();
c.name = "Jane Smith";
a.setId(1000);
a.setBalance(2000.0);
a.setAnnualInterestRate("1.23%");
c.account = a;
c.account.deposit(100.0);
c.account.withraw(960.0);
c.account.withraw(2000.0);
System.out.println("Customer["+c.name+"] has a acount:id:"+c.account.getId()+" balance:"+c.account.getBalance()+" annualInterestRate:"+c.account.getAnnualInterestRate());
}
public Customer(){
}
public Customer(String n, Account a){
name = n;
account = a;
}
}
7月8日
2.1.多态练习题
编写程序模拟"主人"喂养"宠物"的场景:
提示1:
主人类: Master
宠物类: Pet
宠物类子类: Dog、 Cat、YingWu
提示2:
主人应该有喂养的方法: feed ()宠物应该有吃的方法: eat()
只要主人喂宠物,宠物就吃。
要求:主人类中只提供–个喂养方法feed(),要求达到可以喂养各种类型的宠物.
编写测试程序:
创建主人对象
创建各种宠物对象
调用主人的喂养方法feed(),喂养不同的宠物,观察执行结果.
通过该案例,理解多态在开发中的作用。
重要提示: feed方法 是否需要-一个参数,参数选什么类型! ! !
public class Test{
public static void main(String[] args){
Master m = new Master();
Pet p = new Pet();
Pet d = new Dog();
Pet c = new Cat();
Pet y = new YingWu();
//喂养宠物
m.feed(d);
m.feed(c);
m.feed(y);
m.feed(p);
//各个子类的特有方法
m.test(c);
m.test(y);
m.test(d);
m.test(p);
}
}
public class Master{
public void feed(Pet p){
p.eat();
}
public void test(Pet p){
if(p instanceof Dog){
Dog d = (Dog)p;//向下转型
d.sleep();
}else if(p instanceof Cat){
Cat c = (Cat)p;
c.zhuaLaoShu();
}else if(p instanceof YingWu){
YingWu y = (YingWu)p;
y.speak();
}
}
}
public class Pet{
public void eat(){
System.out.println("宠物在吃饭。。。");
}
}
class Dog extends Pet{
public void eat(){
System.out.println("Dog在吃饭。。。");
}
public void sleep(){
System.out.println("狗狗正在睡觉。。。");
}
}
class Cat extends Pet{
public void eat(){
System.out.println("猫正在吃饭。。。");
}
public void zhuaLaoShu(){
System.out.println("猫在抓老鼠。。。");
}
}
class YingWu extends Pet{
public void eat(){
System.out.println("鹦鹉在吃饭。。。");
}
public void speak(){
System.out.println("鹦鹉在说话。。。");
}
}
7月12号
接口在开发中作用。
举个栗子:中午你去饭馆吃饭,饭馆有不同的厨师,
你自己身为顾客是不需要关心厨师是谁谁谁,厨师也不要关心做给谁吃,所以这个时候,菜单就出现了,顾客手里拿着菜单(has a foodmenu)点菜,厨师负责实现菜单(like foodmenu)里的菜。
所以菜单在顾客那里叫属性在厨师那里叫实现。
接口:
public interface FoodMenu {
//蛋炒饭
void riceEgg();
//鱼香肉丝
void fishRousi();
}
厨师
//厨师负责实现这个菜单接口
public class ChinaCooker implements FoodMenu {
@Override
public void riceEgg() {
System.out.println("中餐厨师做的蛋炒饭。。。真香");
}
@Override
public void fishRousi() {
System.out.println("中餐厨师做的鱼香肉丝,很香。。。");
}
}
public class Westercooker implements FoodMenu{
@Override
public void riceEgg() {
System.out.println("西方厨师做的蛋炒饭");
}
@Override
public void fishRousi() {
System.out.println("西方厨师做的鱼香肉丝");
}
}
customer
//菜单是接口顾客负责调用这个接口,为顾客的属性
public class Customer {
//customer has a foodmenu.表示有这个属性,属性都要封装。
private FoodMenu foodMenu;
//无参数构造
public Customer() {
}
//有参构造
public Customer(FoodMenu foodMenu) {
this.foodMenu = foodMenu;
}
//getter and setter 方法
public FoodMenu getFoodMenu() {
return foodMenu;
}
public void setFoodMenu(FoodMenu foodMenu) {
this.foodMenu = foodMenu;
}
//提供点菜方法
public void order(){
//调用菜单中的菜方法
this.getFoodMenu().riceEgg();
this.getFoodMenu().fishRousi();
}
}
test
public class FoodTest {
public static void main(String[] args) {
//多态,父类型引用指向子类型对象
FoodMenu foodMenu = new ChinaCooker();
FoodMenu foodMenu1 = new Westercooker();
Customer customer = new Customer(foodMenu);
customer.order();
}
}
7月19号
酒店管理系统部分功能实现
为某个酒店编写程序:酒店管理系统,模拟订房、退房、打印所有房间状态等功能.
1、该系统的用户是:酒店前台。
酒店使用一个二维数组来模拟。“Room[][] rooms;” .
酒店中的每一个房间应该是一个java对象: Room
每一个房间Room应该有房间编号、房间类型、房间是否空闲.
5、系统应该对外提供的功能:
可以预定房间:用户输入房间编号,订房。
可以退房:用户输入房间编号,退房。
可以查看所有房间的状态:用户输入某个指令应该可以查看所有房间状态.
package org.single.jdxt;
import java.util.Scanner;
public class HotelMgtSystem {
public static void main(String[] args) {
Hotel hotel = new Hotel();
while (true) {
System.out.print("===========欢迎来到酒店管理系统===========\n" +
"\t\t\t请输入序号:\n" + "\t\t\t1 订房\n" + "\t\t\t2 退房\n" + "\t\t\t3 打印\n" +"\t\t\t4 退出\n"+ "请输入:");
Scanner s = new Scanner(System.in);
int choice = s.nextInt();
if (choice == 1) {
System.out.print("请输入房间编号:");
int roomNo = s.nextInt();
hotel.order(roomNo);
System.out.print("你还想继续吗,请输入0或1(0 表退出 1 表示继续):");
int choice1 = s.nextInt();
if (choice1 == 0){
break;
}
} else if (choice == 2) {
System.out.print("请输入房间编号:");
int roomNo = s.nextInt();
hotel.exit(roomNo);
System.out.print("你还想继续吗,请输入0(0 表退出):");
int choice1 = s.nextInt();
if (choice1 == 0){
break;
}
} else if (choice == 3) {
hotel.print();
System.out.print("你还想继续吗,请输入0(0 表退出):");
int choice1 = s.nextInt();
if (choice1 == 0){
break;
}
} else if(choice == 4){
break;
}else {
System.out.println("你的输入有误!");
}
}
}
}
package org.single.jdxt;
public class Hotel {
/**
* 酒店类。假设有三层楼,每层10个房间.
* 房间编号为
*/
private Room[][] rooms;
/**
* 构造方法A,默认创建
* */
public Hotel() {
//创建房间数组对象,总共3楼每楼10间
rooms = new Room[3][10];
//创建房间对象
//i表示下标,i+1表示层数
for (int i = 0; i < rooms.length; i++) {
//j表示下表 j+1表示房间数
for (int j = 0; j < rooms[i].length; j++){
if(i == 0) {
rooms[i][j] = new Room((i + 1) * 100 + j + 1, "单人间", true);
}else if(i == 1) {
rooms[i][j] = new Room((i + 1) * 100 + j + 1, "标准间", true);
}else {
rooms[i][j] = new Room((i + 1) * 100 + j + 1, "豪华间", true);
}
}
}
}
public void order(int roomNo){
//输入房间编号,no / 100 为层数减1 为下标, no % 100 为房间号
if(this.rooms[(roomNo / 100) - 1][(roomNo % 100) - 1].isStatus()){
this.rooms[(roomNo / 100) - 1][(roomNo % 100) - 1].setStatus(false);
System.out.println("预定房间编号为:"+ roomNo +"的房间,预定成功!");
return;
}
System.out.println("订房失败,该房间已经被占用!!!");
package org.single.jdxt;
public class Room {
//酒店房间类,房间有房间号,类型,是否空闲。
//房间号
private int no;
//房间类型
private String type;
//房间状态 true 为空闲 false为占用
private boolean status;
public Room() {
//初始化房间的时候默认空闲
this.status = true;
}
public Room(int no, String type, boolean status) {
this.no = no;
this.type = type;
this.status = status;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Room)) return false;
if (this == obj) return true;
//向下转型。
Room r = (Room) obj;
if (this.no == r.no && this.type.equals(r.type)) {
return true;
}
return false;
}
@Override
public String toString() {
return "[" + no + "," + type + "," + (status ? "空闲" : "占用") + "]";
}
}