14章
1.根据目录结构myjava/practice1/Foo.java,写出Foo类的包名。
包名:practice1
2.改写第12章中简答题第3题中的计算机类(Calculator)。要求将加减乘除的方法改写成带参方法,在定义一个运算方法 ope(),接收用户的运算和两个数字,根据用户选择的运算计算结果
import java.util.Scanner;
public class No2 {
public static void main(String[] args) {
No2Class a =new No2Class();
Scanner input =new Scanner(System.in);
System.out.print("请选择运算方法(1.加法 2.减法 3.乘法 4.除法):");
int e =input.nextInt();
System.out.print("请输入第一个数字:");
int q=input.nextInt();
System.out.print("请输入第二个数字:");
int w=input.nextInt();
System.out.println("结果为:"+a.ope(e, q, w));
}
}
public class No2Class {
public int jia(int a,int b){
return (a+b);
}
public int jian(int a,int b){
return (a-b);
}
public int chen(int a,int b){
return (a*b);
}
public int chu(int a,int b){
return (a/b);
}
public int ope(int o,int a,int b) {
int i=0;
switch (o) {
case 1:
i=jia(a, b);
break;
case 2:
i=jian(a, b);
break;
case 3:
i=chen(a,b);
break;
case 4:
i=chu(a, b);
break;
}
return i;
}
}
3.模拟一个简单的购房商贷月供计算器,假设按照以下的公式计算出总利息和每月还款金额
import java.util.Scanner;
public class No3 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
No3Class a =new No3Class();
System.out.print("请输入贷款金额:");
double m=input.nextInt();
System.out.print("请选择贷款年限:1.三年(36个月) 2.五年(60个月) 3.二十年(240个月):");
int y=input.nextInt();
System.out.println("总利息为:"+a.san(m, y));
System.out.println("月供为:"+a.yue(m, y));
}
}
public class No3Class {
public double san(double m,int y) {
double money;
if(y==1){
money=m*0.0603;
}else if(y==2){
money=m*0.0612;
}else{
money=m*0.0639;
}
return money;
}
public double yue(double m,int y) {
double i ;
if(y==1){
i=(m+san(m, y))/36;
}else if(y==2){
i=(m+san(m, y))/60;
}else{
i=(m+san(m, y))/240;
}
return i;
}
}
4.根据指定不同的行及字符,生成不同的三角形。
import java.util.Scanner;
public class No4 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
No4Class a=new No4Class();
System.out.print("请输入行高:");
int gao=input.nextInt();
System.out.print("请输入打印的字符:");
String d=input.next();
a.san(gao,d);
}
}
public class No4Class {
public void san(int gao,String d) {
for (int i = 1; i<=gao; i++) {
for (int j = 0; j < i; j++) {
System.out.print(d);
}System.out.println("");
}
}
}
5.根据三角形的三条边长,判断其是直角、钝角,还是锐角三角形。
import java.util.Scanner;
public class No5 {
public static void main(String[] args) {
No5Class a =new No5Class();
Scanner input = new Scanner(System.in);
String b="y";
while ("y".equals(b)) {
System.out.print("请输入第一条边:");
int z=input.nextInt();
System.out.print("请输入第二条边:");
int x=input.nextInt();
System.out.print("请输入第三条边:");
int c=input.nextInt();
a.panduan(z,x,c);
System.out.println("");
System.out.print("继续吗?(y/n):");
b=input.next();
}
System.out.println("谢谢使用");
}
}
public class No5Class {
public void panduan(int z,int x,int c) {
if(z+x>c&&z+c>x&&x+c>z){
System.out.print("这是一个"+san(z,x,c));
}else{
System.out.println("这不能构成三角形");
}
}
public String san(int z,int x,int c){
String i="";
if((z*z)==(x*x+c*c)|| (x*x)==(z*z+c*c)|| (c*c)==(z*z+x*x)){
i="直角三角形";
}else if((z*z)>(x*x+c*c)||(x*x)>(z*z+c*c)||(c*c)>(z*z+x*x)){
i="钝角三角形";
}else if(z==x&&z==c){
i="等腰三角形";
}else{
i="锐角三角形";
}
return i;
}
}
6.编写程序,向整型数组的指定位置插入元素,并输出插入前后数组的值。
import java.util.Scanner;
public class No6 {
public static void main(String[] args) {
No6Class p=new No6Class();
int []i=new int []{1,2,3,4,5,6,7};
System.out.print("插入之前的数组:");
for (int j = 0; j < i.length; j++) {
System.out.print(i[j]+" ");
}
System.out.println("");
Scanner input =new Scanner(System.in);
System.out.print("请输入插入数字:");
int a=input.nextInt();
System.out.print("请输入插入数字位置(1~7):");
int b=input.nextInt();
p.charu(i, a, b);
}
}
public class No6Class {
public void charu(int [] arr,int a,int b) {
int [] op=new int [arr.length+1];
for (int y = 0; y < arr.length; y++) {
op[y]=arr[y];
}
for (int j = arr.length-1; j >= b-1; j--) {
op[j+1]=arr[j];
}
op[b-1]=a;
for (int i = 0; i < op.length; i++) {
System.out.print(op[i]+" ");
}
}
}
7.本学期期末学员共参加了三门课,即Java、C、SQL,编写方法计算每位学员三门课的平均分。
import java.util.Scanner;
public class No7 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
No7Class a=new No7Class();
No7Class2 b=new No7Class2();
System.out.print("请输入C成绩:");
b.C=input.nextDouble();
System.out.print("请输入java成绩:");
b.java=input.nextDouble();
System.out.print("请输入SQL成绩:");
b.SQL=input.nextDouble();
double avg=a.getavg(b);
System.out.println("平均分为:"+avg);
}
}
public class No7Class {
public double getavg(No7Class2 stu){
return (stu.java+stu.C+stu.SQL)/3;
}
}
public class No7Class2 {
double java;
double C;
double SQL;
}
15章
1.根据你的理解,简要说明比较运算符(==)和equal()方法判断两个字符串是否相等有什么区别。
答:一个是比较地址 一个是比较值
2.输入五种水果的英文名称(如葡萄grape、橘子orange、香蕉banana、苹果apple、桃peach),编写一个程序,输出这些水果的名称(按照在字典里出现的先后顺序输出)。
import java.util.Scanner;
public class No2 {
public static void main(String[] args) {
String a[]=new String[5];
Scanner input=new Scanner(System.in);
No2Class show=new No2Class();
for (int i = 0; i < 5; i++) {
System.out.print("请输入第"+(i+1)+"种水果:");
a[i]=input.next();
}
System.out.println("");
System.out.println("这些水果在字典中排序为:");
show.show(a);
}
}
import java.util.Arrays;
public class No2Class {
public void show(String a[]) {
Arrays.sort(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
3.假设中国人的姓都是单个字,请随机输入一个人的姓名,然后输入一个人的姓名,然后输出姓和名
import java.util.Scanner;
public class No3 {
public static void main(String[] args) {
No3Class a=new No3Class();
String name="";
Scanner input =new Scanner(System.in);
System.out.print("请输入姓名:");
name=input.next();
System.out.println("姓:"+a.name(name));
System.out.println("名:"+a.name1(name));
}
}
public class No3Class {
/**
* 提取 姓
* @param name
* @return
*/
public String name(String name) {
return name.substring(0, 1);
}
/**
* 提取 名
* @param name
* @return
*/
public String name1(String name) {
return name.substring(1);
}
}
4.录入用户的18位身份证号码,从中提取用户的生日。
import java.util.Scanner;
public class No4 {
public static void main(String[] args) {
String ID="";
No4Class a=new No4Class();
Scanner input=new Scanner(System.in);
boolean flag=true;
do {
System.out.print("请输入身份证号:");
ID=input.next();
if(ID.length()==18){
System.out.println("");
System.out.println("该用户的生日是:"+a.year(ID)+"年"+a.mo(ID)+"月"+a.day(ID)+"日");
flag=false;
}else{
System.out.println("请输入正确的身份证号!");
}
} while (flag);
}
}
public class No4Class {
/**
* 提取 年
* @param ID
* @return
*/
public String year(String ID) {
return ID.substring(6, 10);
// 430405199909161012
}
/**
* 月
* @return
*/
public String mo(String ID) {
return ID.substring(10, 12);
}
/**
* 日
* @param ID
* @return
*/
public String day(String ID) {
return ID.substring(12, 14);
}
}
5.编写一个字符浏览器,输入字符串及需要查找的字符或字符串,浏览器自动定位所有出现该字符或字符串的位置。
import java.util.Scanner;
public class No5 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
No5Class a=new No5Class();
System.out.print("请输入一段字符:");
String g=input.next();
System.out.print("请输入要查询的字符串:");
String f=input.next();
a.chazhao(g,f);
}
}
public class No5Class {
public void chazhao(String g,String f) {
int index = 0;
int i = index;
int length = g.length();
System.out.print(f + "出现的位置是: ");
do {
index = g.indexOf(f, i);
if (index == -1) {
break;
}
System.out.print(index+1 + " ");
i = index + f.length();
} while (i <= length);
}
}
6.对录入的信息进行有效性验证。
录入会员生日时,形式必须是“月/日”,如“09/12”。录入的密码位数必须为6~10位。允许用户重复录入,直到输入正确为止
import java.util.Scanner;
public class No6 {
public static void main(String[] args) {
No6Class i=new No6Class();
Scanner input =new Scanner(System.in);
do {
System.out.print("请输入会员生日<月/日:00/00>:");
String a=input.next();
i.panduan(a);
} while (i.flag);
System.out.println("");
do {
System.out.print("请输入会员密码<6~10位>:");
String b=input.next();
i.mima(b);
} while (i.flag1);
}
}
public class No6Class {
boolean flag=true;
boolean flag1=true;
/**
* 判断生日是否合法
* @param a
*/
public void panduan(String a) {
if(a.subSequence(2, 3).equals("/")){
System.out.println("该会员的生日是:"+a);
flag=false;
}else{
System.out.println("输入错误!");
}
}
/**
* 判断密码是否合法
*/
public void mima(String a) {
if(a.length()>=6&&a.length()<=10){
System.out.println("该会员的密码为:"+a);
flag1=false;
}else{
System.out.println("密码不合法!");
}
}
}
16章
1.实现用户登入功能,在控制台输入用户名和密码,然后判断输入是否正确并输入结果。
import java.util.Scanner;
public class No1 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
No1Class i=new No1Class();
System.out.print("请输入账号:");
String a =input.next();
System.out.print("请输入密码:");
String b =input.next();
if (i.flag(a,b)) {
System.out.println("登入成功");
}else {
System.out.println("登入失败");
}
}
}
public class No1Class {
String a="admin";
String b="123";
public boolean flag(String a1,String b1) {
boolean flag=false;
if (a1.equals(a)&&b1.equals(b)) {
flag=true;
}
return flag;
}
}
2.在控制台输入学生姓名,年龄,性别,和学校,然后模拟将该学生信息存储到数据库中。
import java.util.Scanner;
public class No2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
No2Class1 i=new No2Class1();
No2Class o=new No2Class();
System.out.print("请输入学生姓名:");
i.name=input.next();
System.out.print("请输入学生年龄:");
i.age=input.nextInt();
System.out.print("请输入学生性别:");
i.sex=input.next();
System.out.print("请输入学生学校:");
i.xuexiao=input.next();
System.out.println("");
o.insert(i);
}
}
public class No2Class {
public void insert(No2Class1 i) {
System.out.println("将该学生信息成功写入到数据库");
System.out.println(i.name+" "+i.age+" "+i.sex+" "+i.xuexiao);
}
}
3.某公司对固定资产进行编号,规则如下:购买年份+产品类型(1为台式机,2为笔记本,3为其他,统一采用两位数字表示,数字前加0)+3位随机数。
import java.util.Scanner;
public class No3 {
public static void main(String[] args) {
No3Class i=new No3Class();
Scanner input=new Scanner(System.in);
System.out.print("请输入年份:");
String age =input.next();
System.out.print("请选择产品类型(1.台式机 2.笔记本 3.其他):");
int num=input.nextInt();
System.out.println("");
System.out.println("该固定资产编号为:"+i.num(age,num));
}
}
import java.util.Random;
public class No3Class {
public String num(String age,int num) {
int i= (int) (Math.random() * (999 - 100)) + 100;
StringBuffer a=new StringBuffer(age);
StringBuffer a1=a.append("0"+num);
StringBuffer a2=a.append(i);
return a.toString();
}
}
4.按照月/日/年的方法输入一个日期(如8/8/2008),然后对字符串进行拆分,输出某天是哪年哪月哪日(如2008年8月8日)。
import java.util.Scanner;
public class No4 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
No4Class i=new No4Class();
System.out.print("请输入一个日期(月/日/年):");
String time=input.next();
i.time(time);
}
}
public class No4Class {
public void time(String time) {
String a[]=time.split("/");
System.out.println(a[2]+"年"+a[0]+"月"+a[1]+"日");
}
}
17章
吃货联盟系统
import java.util.Scanner;
public class test {
public static void main(String[] args) {
LogoingClass logoing = new LogoingClass();
OrderingUtil b=new OrderingUtil();
Scanner input = new Scanner(System.in);
int num = 1;
boolean isExit = false;
System.out.println("欢迎使用“吃货联盟订餐系统”");
do {
logoing.logoing();
System.out.print("请选择:");
String xuanze = input.next();
switch (xuanze) {
case "1":
System.out.println("***我要订餐***");
b.add();
break;
case "2":
System.out.println("***查看餐袋***");
b.ChaKanCanDai();
break;
case "3":
System.out.println("***签收订单***");
b.qianshou();
break;
case "4":
System.out.println("***删除订单***");
b.del();
break;
case "5":
System.out.println("***我要点赞***");
b.dianzan();
break;
case "6":
isExit = true;
break;
default:
System.out.print("错误请重新选择,");
break;
}
if (!isExit) {
System.out.print("输入0返回,0除外退出系统:");
num = input.nextInt();
} else {
break;
}
} while (num == 0);
System.out.println("谢谢您的使用!");
}
}
public class LogoingClass {
public void logoing() {
System.out.println("********************");
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("********************");
}
}
public class OrderingSet {
String[] names = new String[4]; // 订餐人
String[] disMegs = new String[4]; // 菜品名及份数
int[] times = new int[4]; // 送餐时间
String[] addresses = new String[4]; // 送餐地址
int[] states = new int[4]; // 订单状态 0表示已预订 1表示已完成
double[] sumPrices = new double[4]; // 订单总金额
}
import java.util.Scanner;
/**
*
* @author Cat
*
*/
public class OrderingUtil {
/*
* 定义菜品价格及点赞数
*/
String[] dishNames = { "红烧带鱼", "鱼香肉丝", "时令蔬菜" }; // 菜名
double[] prices = { 38.0, 20.0, 10.0 }; // 价格
int[] praiseNums = new int[3]; // 点赞数
OrderingSet oSet = new OrderingSet();
/**
* 查看菜袋
*/
public void ChaKanCanDai() {
System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订单状态");
// 循环查看餐袋内容是否为null 如果不为null 就引用数值 打印输出
for (int i = 0; i < oSet.names.length; i++) {
if (oSet.names[i] != null) {
String state = (oSet.states[i] == 0) ? "已预订" : "已完成";
String date = oSet.times[i] + "时间";
String sumPrice = oSet.sumPrices[i] + "元";
System.out.println((i + 1) + "\t" + oSet.names[i] + "\t"
+ oSet.disMegs[i] + "\t" + oSet.times[i] + "点\t"
+ oSet.addresses[i] + "\t" + sumPrice + "\t" + state);
}
}
}
/**
* 签收订单
*/
public void qianshou() {
boolean flag = true; // 订单是否找到
Scanner input = new Scanner(System.in);
System.out.print("请选择要签收的订单序号:");
int xuhao = input.nextInt();
/*
* 循环查看订单 如果条件满足 就签收订单 或者提醒用户订单已经完成签收
*/
for (int i = 0; i < oSet.names.length; i++) {
if (oSet.names[i] != null && oSet.states[i] == 0
&& xuhao == (i + 1)) {
oSet.states[i] = 1;
flag = false;
System.out.println("订单签收成功!");
} else if (oSet.names[i] != null && oSet.states[i] == 1
&& xuhao == (i + 1)) {
System.out.println("您选择的订单已完成签收,不能再次签收!");
flag = false;
}
}
if (flag) {
System.out.println("订单不存在!");
}
}
/**
* 添加订单
*
*/
public void add() {
boolean isAdd = false;
for (int i = 0; i < oSet.names.length; i++) {
if (oSet.names[i] == null) {
isAdd = true;
int time = 0;
boolean dingcantime = true;
Scanner input = new Scanner(System.in);
System.out.print("请输入点餐人姓名:");
String name = input.next();
System.out.println("序列\t菜名\t单价\t点赞数");
for (int j = 0; j < dishNames.length; j++) {
String money = prices[j] + "元";
String Zan = (praiseNums[j] > 0) ? praiseNums[j] + "赞": "0";
System.out.println((j + 1) + "\t" + dishNames[j] + "\t"+ money + "\t" + Zan);
}
System.out.print("请选择您要点的菜品编号:");
int cai = 0;
if (input.hasNextInt()) {
cai = input.nextInt();
} else {
System.out.println("输入错误!");
break;
}
System.out.print("请选择您需要的份数:");
int num = 0;
if (input.hasNextInt()) {
num = input.nextInt();
} else {
System.out.println("输入错误!");
break;
}
String dishMeg = dishNames[cai - 1] + num + "份";
double canfei = prices[cai - 1] * num;
double soncaifei = (canfei >= 50) ? 0 : 5;
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
do {
time = input.nextInt();
if (time < 10 || time > 20) {
System.out.print("时间不匹配,请从新输入:");
} else {
dingcantime = false;
}
} while (dingcantime);
System.out.print("请输入送餐地址:");
String dizhi = input.next();
System.out.println("订餐成功!");
System.out.println("您订的是:" + dishMeg);
System.out.println("送餐时间:" + time + "点");
System.out.println("餐费:" + canfei + "元,送餐费" + soncaifei
+ "元,总计:" + (canfei + soncaifei) + "元。");
oSet.names[i] = name;
oSet.disMegs[i] = dishMeg;
oSet.times[i] = time;
oSet.addresses[i] = dizhi;
oSet.sumPrices[i] = canfei + soncaifei;
break;
}
}
if (!isAdd) {
System.out.println("对不起,您的餐袋已满!");
}
}
/**
* 删除订单
* 根据用户正确的输入数据 进行判断查找
* 如果找到数据 对相应坐标之后的数据进行向前位移及删除最后一位数值的值
* 如果未找到 提醒用户未找到
*/
public void del() {
boolean flag = true;
Scanner input = new Scanner(System.in);
System.out.print("请输入要删除的订单号:");
if (input.hasNextInt()) {
int del = input.nextInt();
for (int i = 0; i < oSet.names.length; i++) {
if (oSet.names[i] != null && oSet.states[i] == 1
&& del == i + 1) {
flag = false;
//循环向前位移
for (int j = del - 1; j < oSet.names.length - 1; j++) {
oSet.names[j] = oSet.names[j + 1];
oSet.disMegs[j] = oSet.disMegs[j + 1];
oSet.times[j] = oSet.times[j + 1];
oSet.states[j] = oSet.states[j + 1];
oSet.addresses[j] = oSet.addresses[j + 1];
oSet.sumPrices[j] = oSet.sumPrices[j + 1];
}
//删除最后位置的数据
oSet.names[oSet.names.length - 1] = null;
oSet.disMegs[oSet.names.length - 1] = null;
oSet.times[oSet.names.length - 1] = 0;
oSet.states[oSet.names.length - 1] = 0;
oSet.addresses[oSet.names.length - 1] = null;
oSet.sumPrices[oSet.names.length - 1] = 0;
System.out.println("删除成功!");
break;
} else if (oSet.names[i] != null && oSet.states[i] == 0
&& del == i + 1) {
System.out.println("订单未签收,不能删除!");
flag = false;
break;
}
}
if (flag) {
System.out.println("订单未找到!");
}
} else {
System.out.println("请正确输入!");
}
}
/**
* 点赞
* 先循环打印之前的点赞数 之后根据判断条件 进行点赞数+1 完成后提示点赞成功 否则提醒报错
*/
public void dianzan() {
System.out.println("序列\t菜名\t单价\t点赞数");
for (int j = 0; j < dishNames.length; j++) {
String money = prices[j] + "元";
String Zan = (praiseNums[j] > 0) ? praiseNums[j] + "赞" : "0";
System.out.println((j + 1) + "\t" + dishNames[j] + "\t" + money
+ "\t" + Zan);
}
Scanner input = new Scanner(System.in);
System.out.print("请选择要点赞的菜品序号:");
if (input.hasNextInt()) {
int xuhao = input.nextInt();
if (xuhao < 1 || xuhao > 3) {
System.out.println("请正确输入!");
} else {
praiseNums[xuhao - 1]++;
System.out.println("点赞成功!");
}
} else {
System.out.println("请正确输入!");
}
}
}
ps.之前写完一直没有交emmmmm。