假设系统给定一个人的年龄(这个年龄是键盘输入的)
根据年龄来判断这个人处于生命的哪个阶段,年龄必须在[0 - 150]

[0 - 5] 幼儿

[6 - 10] 少儿

[11 - 18] 青少年

[19 - 35] 少年

[36 - 55] 中年

[56 - 150] 老年

 public class IfTest02{

public static void main(String[] args){

//int age = 19;
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请输入您的年龄:");//输出提示信息,不然用户根本不知道这里要干嘛
int age = s.nextInt();//停下来等待用户的输入,输入之后自动接收,赋值给age变量


//2.根据需求进行业务逻辑判断
String str = "您处于生命周期的老年阶段";
if(age < 0 || age > 150){
str = "请重新输入年龄";
}else if(age <= 5){
str = "您处于生命周期的幼儿阶段";
}else if(age <= 10){
str = "您处于生命周期的青年阶段";
}else if(age <= 18){
str = "您处于生命周期的青少年阶段";
}else if(age <= 35){
str = "您处于生命周期的少年阶段";
}else if(age <= 55){
str ="您处于生命周期的中年阶段";
}
System.out.println(str);
}
}
判断当前天气:
当外面下雨的时候:
带雨伞:
判断性别:
当性别为男时:带一把大黑伞
当性别为女时:带一把小花伞

当外边是晴天的时候:
判断天气的温度:
当天气温度30度以上时:
男:戴墨镜
女:擦防晒霜

提示:
1.一定会用到嵌套
2.天气状况,温度,性别都需要从键盘输入
天气状况:1表示下雨 0表示晴天
温度直接使用数字即可
性别:1表示男、0表示女
public class IfTest03{

public static void main(String[] args){

System.out.println("欢迎使用本系统,您通过本系统可以完成一些简单的判断");
System.out.println("说明1:1表示下雨,0表示天晴");
System.out.println("说明2: 1表示男,0表示女");
System.out.println("说明3:温度为数字");
//先获取键盘输入值
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请输入天气:");
int Weather = s.nextInt();//天气
System.out.print("请输入性别:");
int Sex = s.nextInt();//性别

//下雨时
if(Weather == 1){
//判断性别
if(Sex == 1){
System.out.println("带一把大黑伞");
}else if(Sex == 0){
System.out.println("带一把小花伞");
}else{
System.out.println("对不起,您的性别是怎么回事?");
}
}else if(Weather == 0){ //天晴时
System.out.print("请输入温度:");
int temp = s.nextInt();//温度
if(temp > 30){ //温度高于30度男女要做的事情
if(Sex == 1){
System.out.println("带墨镜");
}else if(Sex == 0){
System.out.println("擦防晒霜");
}else{
System.out.println("对不起,您的性别是怎么回事?");
}

}else{
System.out.println("今天天气不错,可以直接出行!");
}

}else{
System.out.println("您输入的天气不存在");
}
}
}


for循环

public class ForTest02
{
public static void main(String[] args){

//输出1-10之间的所有奇数
for(int i=1;i<=10;i+=2){
System.out.println("------->" + i);
}

//输出1-10之间所有的偶数
for(int i=2;i<=10;i+=2){
System.out.println("-------------->>>" + i);
}

//倒数10 - 0
for(int i=10;i>=0;i--){
System.out.println(i);
}

//倒数奇数
for(int i=9;i>=1;i-=2){
System.out.println("--------------->" + i);
}

//倒数偶数
for(int i=10;i>=0;i-=2){
System.out.println("----------->>>>" + i);
}

}
}
---------------------------------------------------------------------------
/*
在前一个程序的基础上,计算1-100所有奇数的和
*/

public class ForTest04
{
public static void main(String[] args){
int sum = 0;
for(int i=1;i<=100;i+=2){
sum += i;

}
System.out.println(sum);

}
}


for循环实现九九乘法表

public class ForTest06
{
public static void main(String[] args){
int sum;
for(int i=1;i<=9;i++){
System.out.println(" ");
for(int j=1;j<=i;j++){
sum = i * j;
System.out.print(j + "*" + i + "=" + sum + " ");
}
}
}
}
编写for循环找出1-100中所有的素数

素数:又被称为质数,能够被1和自身整除,不能被其他数字整除的数字称为素数

该题目主要掌握的知识点:
* for循环的使用
* for循环的嵌套
* 标记
* break
* 统计
public class ForTest07
{
public static void main(String[] args){
for(int i=2;i<=100;i++){
//做一个标记,默认i是一个素数
boolean flag = true;
for(int j=2;j<i;j++){
//判断i是不是一个非素数
if(i % j == 0){
//是一个非素数
flag = false;
//已经确定i是一个非素数,跳出循环,效率较高。
break;
}
}
if(flag){
System.out.print(i );
}

}
}
}
/*
升级版:
编写for循环找出1~10000中所有的素数
要求每8个换一行
*/
public class ForTest07
{
public static void main(String[] args){
int count = 0;
for(int i=2;i<=10000;i++){

boolean flag = true;

for(int j=2;j<i;j++){
if(i % j == 0){
flag = false;
break;//确认不是素数,直接跳出
}
}
if(flag){
System.out.print(i + " ");
count++;
if(count % 8 == 0){
System.out.println();
}
}
}
}
}


switch语句

public class SwitchTest01
{
public static void main(String[] args){
/*
较完整的switch语句
*/
//接收用户输入:
//1 表示星期一
//2 星期二
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.print("请输入数字1-7:");
int userInput = s.nextInt();

switch(userInput){
case 1:
System.out.println("星期一");
break;
case 2:
System.out.println("星期二");
break;
case 3:
System.out.println("星期三");
break;
case 4:
System.out.println("星期四");
break;
case 5:
System.out.println("星期五");
break;
case 6:
System.out.println("星期六");
break;
case 7:
System.out.println("星期七");
break;
default:
System.out.println("您输入的数字错误,请重新输入!");
}
}
}
实现计算器当中的
+
-
*
/
%
实现思路:
1.选择所有数据从键盘输入
2.使用switch语句进行判断
3.需要从控制台输入三次:
* 第一个数字
* 运算符
* 第二个数字
public class SwitchTest02
{
public static void main(String[] args){
java.util.Scanner s = new java.util.Scanner(System.in);
System.out.println("欢迎使用简单计算器系统!");
System.out.print("请输入第一个数字:");
int first = s.nextInt();
System.out.print("请输入运算符:");
String operator = s.next();
System.out.print("请输入第二个数字:");
int second = s.nextInt();
int result = 0;

switch(operator){
case "+":
System.out.println(first + "+" + second + "=" + (first + second));
break;
case "-":
System.out.println(first + "-" + second + "=" + (first - second));
break;
case "*":
System.out.println(first + "*" + second + "=" + (first * second));
break;
case "/":
System.out.println(first + "/" + second + "=" + (first / second));
break;
case "%":
System.out.println(first + "%" + second + "=" + (first % second));
break;
default :
System.out.println("您输入的运算符不正确");
}
}
}


递归案例

不使用递归,计算1 - N的求和
注意,这里的N是指方法调用前未赋值的数,并不是无限
public class RecursionTest02
{
public static void main(String[] args){


//调用方法
int a = sum(10);
System.out.println(a);

}

//单独定义一个方法,这是一个独立的功能,完成1-N的求和
public static int sum(int n){

int result = 0;
for(int i=0;i<=n;i++){

result += i;
}
return result;
}
}

//使用递归计算1-N的和
public class RecursionTest03
{
public static void main(String[] args){

int a = sum(4);
System.out.println(a);
}
public static int sum(int n){
if(n == 1){
return 1;
}
return n + sum(n-1);
}
}
//执行过程:
//n + sum(n - 1)
//4 + sum(3)
//4 + 3 + sum(2)
//4 + 3 + 2 + sum(1)
//4 + 3 + 2 + 1 此时sum方法结束 将值返回到main方法中的a变量中


先不使用递归 计算5的阶乘5 * 4 * 3 * 2 * 1

public class RecursionTest04
{
public static void main(String[] args){

int a = method(5);
System.out.println(a);
}
public static int method(int n){

int mul = 1;
for(int i=n;i>=1;i--){

mul *= i;

}
return mul;
}
}

//递归方式
//不懂递归就记住此程序,面试题出现概率过高

public class RecursionTest04
{
public static void main(String[] args){

int result = method(5);
System.out.println(result);
}

public static int method(int n){

if(n == 1){
return 1;
}
return n * method(n - 1);
}
}
定义一个计算机类【电脑/笔记本】
* 品牌
* 型号
* 颜色

定义一个学生类
* 学号
* 姓名
* 学生有一台笔记本电脑

请编写程序来表示以上的类,然后分别将类创建为对象,
对象数量不限,然后让其中的一个学生去使用其中的一台笔记本电脑。


编译并运行,将整个执行过程采用图形方式描述出来。
//计算机类

class Computer
{
String brand;

String type;

String color;
}


//学生类

class Student01
{
//学号
int no;

//姓名
String name;

Computer have;
}


public class OOTest02
{
public static void main(String[] args){

//创建笔记本对象
Computer com = new Computer();
//不采用默认值
com.brand = "HASEE战神";
com.type = "c6001";
com.color = "black";

//创建学生对象
Student01 stu = new Student01();
//不采用默认值
stu.name = "jack";
stu.no = 123;
stu.have = com; //使学生拥有电脑



//获取jack笔记本的品牌
System.out.println(stu.have.brand);

//修改jack笔记本的品牌
stu.have.brand = "华硕";
System.out.println(stu.have.brand);
}
}


小芳的妈妈每天给他2.5元钱,他都会存起来,但是,每当这一天是存钱的第五天或者是5的倍数的话,他都会花去6元钱,请问经过多少天小芳才可以存到100元钱。

public class Money {

public static void main(String[] args) {

int day = 0;//初始天数
double money = 0.0;//初始金钱
/*while(true){
day += 1;//天数 + 1
money += 2.5;//金钱 + 2.5
if(day % 5 == 0){
money -= 6;
}
if(money >= 100){
break;
}
}
System.out.println("小芳通过" + day + "天存了" + money + "元钱");
*/
while(money <= 100){
day += 1;
money += 2.5;
if(day % 5 == 0){
money -= 6;
}
}
System.out.println("小芳通过" + day + "天存了" + money + "元钱");
}
}

package com.studynode.javase.test005;
import java.util.Scanner;

public class Star {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);
System.out.print("请输入一个正整数:");
int rows = s.nextInt();
System.out.println(rows);

for(int i=0; i<=rows;i++){
//System.out.println(i);

for(int j=0;j<rows-i;j++){
System.out.print(" ");
}

for(int m=0;m < i*2-1;m++){
System.out.print("*");
}
System.out.println();
}
}
}
请通过代码封装,实现如下需求:
编写一个类Book,代表教材:
1.具体属性:名称(title)、页数(pageNum)
2.其中页数不能少于200页,否则输出错误信息,并赋予默认值200
3.为各属性提供赋值和取值方法
4.具有方法:detail,用来在控制台输出每本教材的名称和页数。
5.编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail
public class Homework {

public static void main(String[] args) {
//创建book对象
Book b = new Book("哈利波特",355);
//调用detail方法
b.detail();
//修改页数
b.setPageNum(20);
//再次调用detail方法
b.detail();

Book b2 = new Book();
b2.detail();

}

}


//书本类
class Book{
//名称
private String title;
//页数
private int pageNum;

//无参数构造方法
public Book(){

}
public Book(String t,int p){
title = t;
if(p < 200){
pageNum = 200;
}
pageNum = p;
}

//标题的set、get方法
public void setTitle(String t){
title = t;
}
public String getTitle(){
return title;
}

//页数的set、get方法
public void setPageNum(int p){
if(p < 200){
System.out.println("输出信息错误");
p = 200;
}
pageNum = p;
}
public int getPageNum(){
return pageNum;
}
//向控制台输出
public void detail(){
System.out.println("教材名称:" + title + ",总页数为:" + pageNum);
}

}
写一个名为Account的类模拟账户。
该类的属性和方法如下所示
该类的属性包括:账户id,余额balance,年利率annualInteresRate;
包含的方法:各属性的set、get方法。取款方法wirhdraw(),存款方式deposit()

写一个测试程序
1.创建一个Customer,名字叫Jane Smith,他有一个账号为1000,余额为2000,年利率为1.23%
2.对jane Smith操作:
存入100元,再取出960元,再取出2000。
打印Jane Smith的基本信息
信息显示如下:
成功存入:100
成功取出:960
余额不足,取钱失败
package com.studynode.javase.test006;

//银行类
public class Account {
//账号
private String id;
//余额
private double balance;
//年利率
private double annualInteresRate;



//无参数构造方法
public Account(){

}
//有参数构造方法
public Account(String id,double balance,double annualInteresRate){
this.id = id;
this.balance = balance;
this.annualInteresRate = annualInteresRate;
System.out.println("欢迎使用本银行系统");
System.out.println("您可以在此处进行存款、取款等操作!");

}

//账号的set、get方法
public void setId(String i){
id = i;
}
public String getId(){
return id;
}
//余额的set、get方法
public void setBalance(double b){
balance = b;
}
public double getBalance(){
return balance;
}
//年利率的set、get方法
public void setAnnualInteresRate(double a){
annualInteresRate = a;
}
public double getAnnualInteresRate(){
return annualInteresRate;
}



//取款方法
public void wirhdraw(double wir){
if(balance > wir){ //如果当前账户余额大于取款数目
balance -= wir;
System.out.println("成功取款:" + wir + "元");
System.out.println("您当前账户余额为:" + balance + "元");
}else{
System.out.println("您的余额不足,取钱失败!");
}
}

//存款方法
public void deposit(double dep){
balance += dep;
System.out.println("成功存入:" + dep + "元");
System.out.println("存款成功,您当前的账户余额为:" + balance + "元");
}

}

public class Homework02 {

public static void main(String[] args) {

Account user = new Account("1000",2000,0.00123);//创建Account对象并调用有参数构造方法
Custemoer u = new Custemoer("Jane Smith",user); //创建一个顾客类对象

System.out.println("欢迎" + u.getName() + "使用" + "," + "该系统将全方位保护您的信息安全!");
System.out.println("如果遇到问题可及时咨询人工服务,也可向大厅柜台及时反应!");
/*
成功存入:100
成功取出:960
余额不足,取钱失败
*/
//顾客信息都是私有的,在外部不使用get方法无法访问
u.getAct().deposit(100);
u.getAct().wirhdraw(900);
u.getAct().wirhdraw(2000);
}

}
//创建一个顾客类
class Custemoer{

private String name;//姓名
private Account act;//说明用户手里有一个银行卡

//无参数构造方法
public Custemoer(){

}
//有参数构造方法
public Custemoer(String name,Account act){
this.name = name;
this.act = act;
}

//name
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}

//Account
public void setAct(Account act){
this.act = act;
}
public Account getAct(){
return act;
}

}
封装已知类Student 代码如下:
class Student{
String name;
int age;
String address;
String zipCode;
String mobile;
}

要求:
1.把Student的属性都作为私有,并提供set/get方法以及适当的构造方法。
2.为Student类添加一个getPostAddress方法,要求返回Student对象的地址和邮编。
public class Homework03 {

public static void main(String[] args) {

Student s = new Student();
s.setAddress("湖南省永州市");
s.setZipCode("4000001");
s.getPostAddress();
}

}
class Student{
private String name;
private int age;
private String address;
private String zipCode;
private String mobile;

//无参构造方法
public Student(){

}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getZipCode() {
return zipCode;
}
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}

public void getPostAddress(){
System.out.println("地址:" + address);
System.out.println("邮编:" + zipCode);
}
}
定义丈夫类Husband和妻子类Wife
* 丈夫类属性包括:身份证号,姓名,出生日期,妻子。
* 妻子类属性包括:身份证号,姓名,出生日期,丈夫。
* 分别给这两个类提供构造方法(无参数构造方法和有参数构造方法都要提供)。
* 编写测试程序,创建丈夫、妻子对象,丈夫和 妻子关联
* 关联之后要求能够输出“丈夫对象” 妻子的名字,“妻子对象”能够输出 丈夫名字
public class Test {

public static void main(String[] args){
//创建丈夫对象
Husband h = new Husband("1111","zhangsan","20010203",null);

//创建妻子对象
Wife w = new Wife("2222","lisi","20020302",null);
//实现关联
//将丈夫类的妻子定位到妻子类w上
h.w = w;
//将妻子类的丈夫定位到h上
w.h = h;

//当对象的值设置为空之后,在访问这个值,编译阶段就会显示空指针异常:java.lang.NullPointerException
//w.h = null;
//h.w = null;
System.out.println(h.name + "的妻子是" + h.w.name);
System.out.println(w.name + "的丈夫是" + w.h.name);
}
}
//丈夫类
class Husband{
//身份证号
String id;
//姓名
String name;
//出生日期
String birth;
//妻子
Wife w;

//无参数构造方法
public Husband(){

}
//有参数构造方法
public Husband(String id,String name,String birth,Wife wife){
this.id = id;
this.name = name;
this.birth = birth;
w = wife;
}
}

//妻子类
class Wife{
//身份证号
String id;
//姓名
String name;
//出生日期
String birth;
//妻子
Husband h;
//无参数构造方法
public Wife(){

}
//有参数构造方法
public Wife(String id,String name,String birth,Husband husband){
this.id = id;
this.name = name;
this.birth = birth;
h = husband;
}
}


多态练习题

此题不写实现方法,后续如果有需要可自行测试
编写程序模拟主人喂养宠物的场景:
提示1:
主人类:Master
宠物类:Pat
宠物类子类:Dog、Cat、YingWu
提示2:
主人应该有喂养的方法:feed()
宠物应该有吃的方法:eat()
只要主人喂宠物,宠物就吃。

要求:主人类只提供一个feed()方法,要求达到可以喂养各种类型的宠物。

编写测试程序:
创建主人对象
创建各种宠物对象
调用主人喂养方法feed(),喂养不同的宠物,观察执行结果。

通过该案例,理解多态在开发中的作用。
思考:feed是否需要一个参数,参数又该选择这么类型
第二个题:
编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。
可以弹奏的乐器包括二胡、钢琴和琵琶
实现思路及关键代码:
1.定义乐器类Instrument,包括方法makeSound()
2.定义乐器类的子类:Erhu、piano和violin
3.定义乐手类Musician,可以弹奏各种乐器play(Instrument i)
4.定义测试类,给乐手不同的乐器让她弹奏
某公司的雇员分为以下若干类:
Employee:这是所有员工的父类,
属性:
员工的姓名,员工的生日月份
方法:getSalary(intmonth)
根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100元

SalarieEmployee:
Employee 的子类,拿固定工资的员工
属性:月薪

HourlyEmployee:
Employee 的子类,按小时拿工资的员工,每月工资超出160小时的部分按照1.5倍工资发放
属性:每小时的工资,每月工资的小时数

SalesEmployee:
Employee 的子类,销售人员,工资按月销售额和提成率决定。
属性:月销售额,提成率

BasePlusSalesEmployee:
Employee 的子类,有固定底薪的销售人员,工资由底薪加上销售提成部分。
属性:底薪。

根据要求创建对象,并计算某个月这些对象的工资

注意:要求把每个类都做成完全封装,不允许非私有化属性