「java第八章课后答案」java第十二章课后题答案

博主:adminadmin 2023-01-13 14:39:09 360

今天给各位分享java第八章课后答案的知识,其中也会对java第十二章课后题答案进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java第八章回答接口的问题

//定义具体类AirPlane,继承Machine

//飞机的work() 方法调用时,输出“正在飞行,速度为…”

public class AirPlane extends Machine {

@Override

void work() {

// TODO Auto-generated method stub

System.out.println("正在飞行,速度为…");

}

}

//定义一个接口canFly,其中,含有speed()方法,

public interface CanFly {

void speed();

}

//并实现canFly接口,每个飞机有型号、飞行速度,编写构造方法,toString()方法,

public class CanFlyImp implements CanFly {

private String xinghao;

private int sudu;

public CanFlyImp() {

super();

// TODO Auto-generated constructor stub

}

public CanFlyImp(String xinghao, int sudu) {

super();

this.xinghao = xinghao;

this.sudu = sudu;

}

public void speed() {

// TODO Auto-generated method stub

}

@Override

public String toString() {

return "CanFlyImp [xinghao=" + xinghao + ", sudu=" + sudu + "]";

}

//set get.....

}

//定义一个抽象类Machine,其中含work()方法,

public abstract class Machine {

abstract void work();

}

//创建一个飞机对象测试,执行对象work()方法;

public class Test {

public static void main(String[] args) {

AirPlane ap = new AirPlane();

ap.work();

CanFlyImp canFlyImp = new CanFlyImp("002",12 );

System.out.println(canFlyImp);

canFlyImp.speed();

}

}

java高手帮帮忙!!急!

---------------------TicketBuyer.java---------------------------

public class TicketBuyer extends Thread {

private int money;

private TicketSeller ticketSeller;

public TicketBuyer(){

}

//构造函数,设置手中钱币值及向哪个售票员买票

public TicketBuyer(int money,TicketSeller ticketSeller){

this.money = money;

this.ticketSeller = ticketSeller;

}

public void run(){

ticketSeller.sellTicket(money);//每个人都买票

}

public static void main(String[] args) {

// TODO 自动生成方法存根

TicketSeller ticketSeller = new TicketSeller();

TicketBuyer Zhang = new TicketBuyer(20,ticketSeller);

TicketBuyer Sun = new TicketBuyer(10,ticketSeller);

TicketBuyer Zhao = new TicketBuyer(5,ticketSeller);

//注以下要设置优先级别是因为他们本来就是排好队的, 先来先买到票

//这样才能保证每次运行先买到票的是拿10元的孙某而不是赵某

Zhang.setPriority(6);

Sun.setPriority(5);

Zhao.setPriority(4);

Zhang.start();

Sun.start();

Zhao.start();

}

}

------------TicketSeller.java-------------------------

public class TicketSeller {

private int fiveNumber = 1;//开始时只有一张5元的钱.

private int tenNumber = 0;

private int twentyNumber = 0;

public synchronized void sellTicket(int receiveMoney) {

if(!isAbleToSell(receiveMoney)){//测下能不能够售票.

try{

wait();//如果不能卖给当前人,那人就得等一会.

}catch(InterruptedException e){

}

}

//只有能够售票的人(线程)才会执行下面的代码.

switch(receiveMoney){//有几种情况

case 5 :fiveNumber ++;break; //不用找零钱

case 10 :tenNumber ++ ;fiveNumber--;break;//要找5元零钱

case 20 :if (tenNumber 0 ){//如果有10元面币的就找10元和5元的

tenNumber --;

fiveNumber --;

twentyNumber ++;

}else{//要没有10元的,那就找回3张5元的

fiveNumber -=3;

twentyNumber ++;

}

break;

}

System.out.printf("当收到钱为:%d元时,售票成功!\n",receiveMoney);//输出信息

notify();//可以叫等着的那个人买票了.

}

//有几种情况看能不能售票,这里你应该能看明白就不多说了.

public boolean isAbleToSell(int money){

if(money == 5 ){

return true;

}else if(money == 10 fiveNumber 0 ){

return true;

}else if(money == 20 tenNumber 0 fiveNumber 0){

return true;

}else if(money == 20 fiveNumber = 3){

return true;

}

return false;

}

}

-------- 运行结果: ---------------------

当收到钱为:10元时,售票成功!

当收到钱为:5元时,售票成功!

当收到钱为:20元时,售票成功!

JAVA的基础题 很容易的

1.B

2.D

3.D

4.B

5.C

6.A

7.B

8.A

9.B

10.D

java语言程序设计课后答案 郞波 第二版 清华大学出版社

我有

Java面向对象程序设计

清华大学出版社

(编著 耿祥义 张跃平)

习题解答

建议使用文档结构图

(选择Word菜单→视图→文档结构图)

习题1

1.James Gosling

2.

(1)使用一个文本编辑器编写源文件。

(2)使用Java编译器(javac.exe)编译Java源程序,得到字节码文件。

(3)使用Java解释器(java.exe)运行Java程序

3.Java的源文件是由若干个书写形式互相独立的类组成的。

应用程序中可以没有public类,若有的话至多可以有一个public类。

4.系统环境path D\jdk\bin;

系统环境classpath D\jdk\jre\lib\rt.jar;.;

5. B

6. Java源文件的扩展名是.java。Java字节码的扩展名是.class。

7. D

8.(1)Speak.java

(2)生成两个字节码文件,这些字节码文件的名字Speak.class 和 Xiti8.class

(3)java Xiti8

(4)执行java Speak的错误提示

Exception in thread "main" java.lang.NoSuchMethodError: main

执行java xiti8得到的错误提示

Exception in thread "main" java.lang.NoClassDefFoundError: xiti8 (wrong name: Xiti8)

执行java Xiti8.class得到的错误提示

Exception in thread "main" java.lang.NoClassDefFoundError: Xiti8/class

执行java Xiti8得到的输出结果

I'm glad to meet you

9.属于操作题,解答略。

习题2

1. D

2.【代码1】 【代码2】 错误 //【代码3】更正为 float z=6.89F;

3.float型常量后面必须要有后缀“f”或“F”。

对于double常量,后面可以有后缀“d”或“D”,但允许省略该后缀。

4.public class Xiti4{

public static void main (String args[ ]){

char ch1='你',ch2='我',ch3='他';

System.out.println("\""+ch1+"\"的位置:"+(int)ch1);

System.out.println("\""+ch2+"\"的位置:"+(int)ch2);

System.out.println("\""+ch3+"\"的位置:"+(int)ch3);

}

}

5.数组名字.length

6.数组名字.length

7. 【代码1】A,65

【代码2】-127

【代码3】 123456.783,123456.78312

8.

【代码1】false

【代码2】true

【代码3】false

【代码4】3

【代码5】4.4

【代码6】8.8

习题3

输出110

if-else语句书写的不够规范,复合语句缺少大括号“{}”,代码不够清晰。

2.你好好酷!!

3.

public class Xiti3_3

{

public static void main (String args[ ]){

int startPosition=0,endPosition=0;

char cStart='а',cEnd='я';

startPosition=(int)cStart; //cStart做int型转换据运算,并将结果赋值给startPosition

endPosition=(int)cEnd ; //cEnd做int型转换运算,并将结果赋值给endPosition

System.out.println("俄文字母表:");

for(int i=startPosition;i=endPosition;i++){

char c='\0';

c=(char)i; //i做char型转换运算,并将结果赋值给c

System.out.print(" "+c);

if((i-startPosition+1)%10==0)

System.out.println("");

}

}

}

4.

public class Xiti4

{ public static void main(String args[])

{ double sum=0,a=1;

int i=1;

while(i=20)

{ sum=sum+a;

i++;

a=a*i;

}

System.out.println("sum="+sum);

}

}

5.

class Xiti5

{ public static void main(String args[])

{ int i,j;

for(j=2;j=100;j++)

{ for(i=2;i=j/2;i++)

{ if(j%i==0)

break;

}

if(ij/2)

{ System.out.print(" "+j);

}

}

}

}

6.

class Xiti6

{ public static void main(String args[])

{ double sum=0,a=1,i=1;

while(i=20)

{ sum=sum+a;

i++;

a=(1.0/i)*a;

}

System.out.println("使用while循环计算的sum="+sum);

for(sum=0,i=1,a=1;i=20;i++)

{ a=a*(1.0/i);

sum=sum+a;

}

System.out.println("使用for循环计算的sum="+sum);

}

}

7.

public class Xiti7

{ public static void main(String args[])

{ int sum=0,i,j;

for(i=1;i=1000;i++)

{ for(j=1,sum=0;ji;j++)

{ if(i%j==0)

sum=sum+j;

}

if(sum==i)

System.out.println("完数:"+i);

}

}

}

8.方法之一

import java.util.Scanner;

public class Xiti8

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

System.out.println("请输入两个非零正整数,每输入一个数回车确认");

Scanner reader=new Scanner(System.in);

int m=0,n=0,temp=0,gy=0,gb=0,a,b;

a=m = reader.nextInt();

b=n = reader.nextInt();

if(mn)

{ temp=m;

m=n;

n=temp;

}

int r=m%n;

while(r!=0)

{ n=m;

m=r;

r=m%n;

}

gy=n;

gb=a*b/gy;

System.out.println("最大公约数 :"+gy);

System.out.println("最小公倍数 :"+gb);

}

}

8.方法之二

import java.util.Scanner;

public class Xiti8 {

public static void main (String args[ ]){

System.out.println("请输入两个非零正整数,每输入一个数回车确认");

Scanner reader=new Scanner(System.in);

int m=0,n=0,t=0,gy=0,gb=0;

m = reader.nextInt();

n = reader.nextInt();

if(mn){

t=m;

m=n;

n=t;

}

for(int i=1;i=m;i++){

if(m%i==0 n%i==0){

gy=i;

}

}

gb=m*n/gy;

System.out.println(m+","+n+"的最大公约数为 "+gy);

System.out.println(m+","+n+"的最小公倍数为 "+gb);

}

}

9.

public class Xiti9

{ public static void main(String args[])

{ int n=1;

long sum=0,t=1;

t=n*t;

while(true)

{ sum=sum+t;

if(sum9999)

break;

n++;

t=n*t;

}

System.out.println("满足条件的最大整数:"+(n-1));

}

}// 1至7的阶乘和是sum=5913.0 // 1至8的阶乘和是sum=46233.0

习题4

1.用该类创建对象时。

2.所谓方法重载是在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。构造方法可以重载。

3. 可以。不可以。

4.不可以。

5.成员变量又分为实例变量和类变量,用static修饰的变量是类变量。那么类变量和实例变量有什么区别呢?一个类通过使用new运算符可以创建多个不同的对象,不同的对象的实例变量将被分配不同的内存空间;如果类中的成员变量有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。也就是说对象共享类变量。

6.C,D

7.【代码1】,【代码4】

8.sum=-100

9.27

10. **20

##100

习题5

1. 如果子类和父类在同一个包中,那么子类自然地继承了其父类中不是private的成员变量作为自己的成员变量,并且也自然地继承了父类中不是private的方法作为自己的方法。继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包中,那么子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法,继承的成员或方法的访问权限保持不变。如果子类和父类不在同一个包里,子类不能继承父类的友好变量和友好方法。

只要子类中声明的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量。

子类中定义一个方法,这个方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型,并且这个方法的名字、参数个数、参数的类型和父类的方法完全相同,子类如此定义的方法称作子类重写的方法。子类通过方法的重写可以隐藏继承的方法。

2.不可以。

3.abstract类。

4.假设B类是A类子类或间接子类,当我们用子类B创建一个对象,并把这个对象的引用放到A类的对象中时,称这个A类对象是子类对象的上转型对象。

5.可以把实现某一接口的类创建的对象的引用赋给该接口声明的接口变量中。那么该接口变量就可以调用被类实现的接口中的方法。

6.A,C,D

7.15.0

8.0

8.98.0

12

9.

class A

{ public final void f()

{ char cStart='a',cEnd='z';

for(char c=cStart;c=cEnd;c++)

{ System.out.print(" "+c);

}

}

}

class B extends A

{ public void g()

{ char cStart='α',cEnd='ω';

for(char c=cStart;c=cEnd;c++)

{ System.out.print(" "+c);

}

}

}

public class Xiti9

{ public static void main (String args[ ])

{ B b=new B();

b.f();

b.g();

}

}

10.

class A

{ public int f(int a,int b){

if(ba)

{ int temp=0;

temp=a;

a=b;

b=temp;

}

int r=b%a;

while(r!=0)

{ b=a;

a=r;

r=b%a;

}

return a;

}

}

class B extends A

{ public int f(int a,int b)

{ int division=super.f(a,b);

return (a*b)/division;

}

}

public class Xiti10

{ public static void main (String args[ ])

{ A a=new A();

B b=new B();

System.out.println("最大公约数 :"+a.f(36,24));

System.out.println("最小公倍数 :"+b.f(36,24));

}

}

习题6

1.仍然有效。

2.可以。

3.不可以。

4.大家好,祝工作顺利!

5. 96

乘数超过99

习题7

1.

(1)Strategy是接口。

(2)Army不是抽象类。

(3)Army和Strategy是关联关系。

(4)StrategyA, StrategyB、StrategyC与Strategy是实现关系。

2.

3.

4.例子13的设计符合开-闭原则。

5.例子17的设计符合开-闭原则。

习题8

采用新增的策略为选手计算得分。

增加新的具体策略StrategyFour。StrategyFour类将double computeScore(double [] a)方法实现为去掉数组a的元素中的一个最大值和一个最小值,然后计算剩余元素的几何平均值。

import java.util.Arrays;

public class StrategyFour implements ComputableStrategy {

public double computeScore(double [] a) {

if(a.length=2)

return 0;

double score=0,multi=1;

Arrays.sort(a);

int n=a.length-2;

for(int i=1;ia.length-1;i++) {

multi=multi*a[i];

}

score=Math.pow(multi,1.0/n);

return score;

}

}

2.

(1)策略(Strategy)PrintCharacter.java

public interface PrintCharacter{

public abstract void printTable(char [] a,char[] b);

}

(2) 具体策略

PrintStrategyOne.java

public class PrintStrategyOne implements PrintCharacter {

public void printTable(char [] a,char[] b) {

for(int i=0;ia.length;i++) {

System.out.print(a[i]+",");

}

for(int i=0;ib.length;i++) {

System.out.print(b[i]+",");

}

System.out.println("");

}

}

PrintStrategyTwo.java

public class PrintStrategyTwo implements PrintCharacter {

public void printTable(char [] a,char[] b) {

for(int i=0;ia.length;i++) {

System.out.print(b[i]+","+a[i]+",");

}

}

}

(3)上下文 PrintGame.java

public class PrintGame {

PrintCharacter strategy;

public void setStrategy(PrintCharacter strategy) {

this.strategy=strategy;

}

public void getPersonScore(char[] a,char[] b){

if(strategy==null)

System.out.println("sorry!");

else

strategy.printTable(a,b);

}

}

应用以上策略:

public class Application {

public static void main(String args[]) {

char [] a=new char[26];

char [] b=new char[26];

for(int i=0;i=25;i++){

a[i]=(char)('a'+i);

}

for(int i=0;i=25;i++){

b[i]=(char)('A'+i);

}

PrintGame game=new PrintGame(); //上下文对象

game.setStrategy(new PrintStrategyOne()); //上下文对象使用策略一

System.out.println("方案1:");

game.getPersonScore(a,b);

game.setStrategy(new PrintStrategyTwo()); //上下文对象使用策略二

System.out.println("方案2:");

game.getPersonScore(a,b);

}

}

3.参照本章8.3.3自主完成。

习题9

1.A,B,D

2. Love:Game

3.13

abc夏日

4.13579

5.9javaHello

6.

public class Xiti6 {

public static void main (String args[ ]) {

String s1,s2,s3,t1="ABCDabcd";

System.out.println("字符串原来是这个样子: "+t1);

s1=t1.toUpperCase();

System.out.println("字符串中的小写字母变成大写是这个样子: "+s1);

s2=t1.toLowerCase();

System.out.println("字符串中的大写字母变成小写是这个样子: "+s2);

s3=s1.concat(s2);

System.out.println("大写字符串连接小写字符串是这个样子: "+s3);

}

}

7.

class Xiti7

{ public static void main(String args[ ])

{ String s ="中华人民共和国";

char a=s.charAt(0);

char b=s.charAt(6);

System.out.println("第一个字符: "+a);

System.out.println("最后一个字符: "+b);

}

}

8.

import java.util.*;

class Xiti8

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

int year,month;

System.out.println("请输入年份和月份,每输入一个数回车确认");

Scanner reader=new Scanner(System.in);

year= reader.nextInt();

month= reader.nextInt();

String [] day=new String[42];

System.out.println(" 日 一 二 三 四 五 六");

Calendar rili=Calendar.getInstance();

rili.set(year,month-1,1);//将日历翻到year年month月1日,注意0表示一月...11表示十二月

int 星期几=rili.get(Calendar.DAY_OF_WEEK)-1;

int dayAmount=0;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

dayAmount=31;

if(month==4||month==6||month==9||month==11)

dayAmount=30;

if(month==2)

if(((year%4==0)(year%100!=0))||(year%400==0))

dayAmount=29;

else

dayAmount=28;

for(int i=0;i星期几;i++)

day[i]="";

for(int i=星期几,n=1;i星期几+dayAmount;i++){

if(n=9)

day[i]=String.valueOf(n)+" " ;

else

day[i]=String.valueOf(n);

n++;

}

for(int i=星期几+dayAmount;i42;i++)

day[i]="";

for(int i=0;i星期几;i++)

{ day[i]="**";

}

for(int i=0;iday.length;i++)

{ if(i%7==0)

{ System.out.println("");

}

System.out.print(" "+day[i]);

}

}

}

9.

import java.util.*;

class Xiti9

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

int year1,month1,day1,year2,month2,day2;

Scanner reader=new Scanner(System.in);

System.out.println("请输入第一个日期的年份 月份 日期 ,每输入一个数回车确认");

year1= reader.nextInt();

month1= reader.nextInt();

day1= reader.nextInt();

System.out.println("请输入第二个日期的年份 月份 日期 ,每输入一个数回车确认");

year2= reader.nextInt();

month2= reader.nextInt();

day2= reader.nextInt();

Calendar calendar=Calendar.getInstance();

calendar.set(year1,month1,day1);

long timeYear1=calendar.getTimeInMillis();

calendar.set(year2,month2,day2);

long timeYear2=calendar.getTimeInMillis();

long 相隔天数=Math.abs((timeYear1-timeYear2)/(1000*60*60*24));

System.out.println(""+year1+"年"+month1+"月"+day1+"日和"+

year2+"年"+month2+"月"+day2+"日相隔"+相隔天数+"天");

}

}

全部都给你

希望那个可以帮助到你 祝你学习成功

Java Accp7.0使用Java理解程序逻辑 第八章数组中有一道题是什么向数组中插入元素 题目如下:

public static void main(String[] args) {

int [] arr = {60,50,60,80,86};

arr= ArrayUtils.add(arr, 99);

arr= ArrayUtils.add(arr, 88);

for(int i =0;iarr.length;i++){

System.out.println(arr[i]);

}

}

其中 arr= ArrayUtils.add(arr, 88); 后面的88 和99就是后来加进去的成绩,

这个应该能满足吧?你试试,希望能帮到你

java考试题求助

Bank类中有一个customers集合,用来存储所有的Customer(储户)对象,addCustomer()方法用语向该集合中添加储户,getCustomer()方法根据下标值获取某个储户,getNumOfCustomer()方法获取储户总数,getCustomers()方法返回储户列表,以便获得每个储户对象‘

Customer类有一个accounts集合,用来存储某个储户的所有Account(账号)对象,addAccount()方法用于向该集合中添加账号,getAccount()方法根据下标值获取该储户的某个账号,getNumOfAccounts()方法获取该储户的账号总数,getAccounts()方法返回该储户的账号Iterator,以便获得每个账号对象。

Account类是抽象类,有一个balance属性,代表余额。Deposit()方法表示存款,amount参数是存款额,Withdraw()方法表示取款,取款额amount如果超出了余额就会抛出透支异常,我们需要定义一个OverdraftException类来表示这个异常,当抛出异常时,不进行取款交易,并报告用户此项错误。

SavingsAccount类表示大额存款账号,继承Account,新增一个属性interestRate,代表利率。

CheckingAccount类表示大额存款账号,也继承Account,它有一个叫canOverdraft的属性,是一个boolean值,代表该账号能否透支(true——能,false——否);它还有一个叫maxOverdraft的属性,表示该账号允许的最大透支额。这个类的withdraw()方法(取款)需要考虑的因素比较多:在发生透支时,如果账号不允许透支(canOverdraft=false),则抛出异常并退出交易;如果允许透支(canOverdraft=true),但透支额(amount-balance)超出最大透支额的话,也抛出异常并退出交易;只有在不发生透支或透支额小于最大透支额时,交易才能正常进行。另外,在每次进行透支交易时,最大透支额(maxOverdraft)应作调整,以便使该账号的最大透支额随透支次数的增加而不断减少,从而避免透支的滥用,阻止信用膨胀。CheckingAccount类有两个构造方法,只带一个参数的构造方法用来初始化balance,同时设定canOverdraft=false,maxOverdraft=0.00.

CustomReport类用来显示每个储户的姓名及他所有的账号的类别和余额,以报表的形式输出。

根据以上描述,创建一个TestBanking类,并在其main方法中添加若干储户和账号,然后模拟存款,取款业务,并最终输出一张完整的报表。

要求:

1. 用文件来存储用户的所有信息。

2. 有用户图形界面。(最基本的:存钱、取钱、新增账号、新增账户,可以使用菜单来实现,也可以使用按钮来实现)。

采用以下表格进行模拟:

储户姓名 账号

Saving Account Checking Account

Jane Simms SavingsAccount(500.00,0.05) CheckingAccount(200.00,true,400.00)

Owen Bryant 无 CheckingAccount(200.00)

Tim Soley SavingsAccout(1500.00,0.05) CheckingAccount(300.00)

Maria Soley SavingsAccount(160.00,0.05) 与Tim Soley共享一个CheckingAccount

输出报表格式如下:

CUSTOMERS REPORT

储户姓名:Jane Simms

Savings Account:当前余额是¥****

Checking Account:当前余额是¥****

储户姓名:Owen Bryant

Checking Account:当前余额是¥****

储户姓名:Tim Soley

Savings Account:当前余额是¥****

Checking Account :当前余额是¥****

储户姓名:Maria Soley

Savings Account :当前余额是¥****

Checking Account :当前余额是¥****

关于java第八章课后答案和java第十二章课后题答案的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。