java的一个小程序,帮我看看哪不对?

java的一个小程序,帮我看看哪不对?,第1张

看了下拉

大致知道你要干什么拉

有几个地方要改

1 public class Donggandidai extends Huadan {

public Donggandidai(){

float ctf=0.6f

float dxf=0.1f

float shf=0.25f

tc="动感地带的资费是"

hf=ctf*ct+dxf*dx+shf*sh

}

}

还有2个类也这样改,就是都改到构造方法里面去!

2 public class Factory {

public Huadan fangfa4(int i){

Huadan a

if(i==1)

{

a=new Donggandidai()

}

if(i==2){

a=new Quanqiutong()

}

else{

a=new Shenzhouxing()

}

return a

}

}

多个判断用swith case,比较好,你这里上面消脊i==1 等于白判断了

switch (i){

case 1:a=new Donggandidai()break

case 2:a=new Quanqiutong()break

case 3:a=new Shenzhouxing()break

}

return a

再简单分析下拉

你Factory类的fangfa4方法返回一个Huadan类,你用创建它的子类返回这没有问题的,你在主方法中用一个Huadan来指向这个子类也没有问题,这相当于用一个父类的变量指向一个子类的对象,也就是多态!但是这个时候你是不能再调用子类的独空仿有而父类没有的方法,而且你没有定义子类的构造方法,所以父类的2个成员变量hf和tc没有赋你想赋的值,都只有它们的默认值null和0.0,所以你打印出来的是null0.0,而且你Factory中的fangfa4方法中的判拿亏渗断也不对,如果判断比较多,建议用switch case

#include"math.h"拆搭

main()

{

float p,d,f

printf("please inout consumption\袜御老n")

scanf("%f",&p)

if(p<100)

{m==0

f=p}

else if(p>告升=100&&p<200)

{m==o.o5

f=(1-0.05)*p}

else if(p>=200&&p<500)

{m==0.1

f=(1-0.1)*p}

else if(p>=500&&p<1000)

{m==0.15

f=(1-0.15)*p}

else(p>=1000)

{m==o.2

f=(1-0.2)*p}

printf("discount is %f,amount is %f",m,f)

}

试试看!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12411990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存