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

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

看了下拉

大致知道你要干什么拉

有几个地方要改

1 public class Donggandidai extends Huadan {

public Donggandidai(){

float ctf=06f;

float dxf=01f;

float shf=025f;

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

hf=ctfct+dxfdx+shfsh;

}

}

还有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和00,所以你打印出来的是null00,而且你Factory中的fangfa4方法中的判断也不对,如果判断比较多,建议用switch case

经常在写程序的时候遇到类似的警告:

warning C4305: '=' : truncation from 'const double

warning C4305: 'argument' : truncation from 'const double' to 'float'等等;

原因:

在 C 语言中,如果不指定数据类型,那么小数常量会被认为是 double 类型的。

因此在你的初始化中

x = 12;

这一句,x 是 float 类型的,但是 12 是 double 类型的,由于它是常量,所以编译器称为 const double。double 是不能隐式转换为 float 的。

C语言中的确有此介绍改成x=12f,y=24f,z=-36f就可以了证明详见谭浩强<<C语言程序第二版>>47页。

#include"mathh"

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==oo5;

f=(1-005)p;}

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

{m==01;

f=(1-01)p;}

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

{m==015;

f=(1-015)p;}

else(p>=1000)

{m==o2;

f=(1-02)p;}

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

}

试试看!

#include<stdioh>

#include<stdlibh>

#include<iostreamh>

typedef struct data

{

float x;

float y;

}Data;//变量x和函数值y的结构

Data d[20];//最多二十组数据

float f(int s,int t)//牛顿插值法,用以返回插商

{

if(t==s+1)

return (d[t]y-d[s]y)/(d[t]x-d[s]x);

else

return (f(s+1,t)-f(s,t-1))/(d[t]x-d[s]x);

}

float Newton(float x,int count)

{

int n;

while(1)

{

cout<<"请输入n值(即n次插值):";//获得插值次数

cin>>n;

if(n<=count-1)// 插值次数不得大于count-1次

break;

else

system("cls");

}

//初始化t,y,yt。

float t=10;

float y=d[0]y;

float yt=00;

//计算y值

for(int j=1;j<=n;j++)

{

t=(x-d[j-1]x)t;

yt=f(0,j)t;

//cout<<f(0,j)<<endl;

y=y+yt;

}

return y;

}

float lagrange(float x,int count)

{

float y=00;

for(int k=0;k<count;k++)//这儿默认为count-1次插值

{

float p=10;//初始化p

for(int j=0;j<count;j++)

{//计算p的值

if(k==j)continue;//判断是否为同一个数

p=p(x-d[j]x)/(d[k]x-d[j]x);

}

y=y+pd[k]y;//求和

}

return y;//返回y的值

}

void main()

{

float x,y;

int count;

while(1)

{

cout<<"请输入x[i],y[i]的组数,不得超过20组:";//要求用户输入数据组数

cin>>count;

if(count<=20)

break;//检查输入的是否合法

system("cls");

}

//获得各组数据

for(int i=0;i<count;i++)

{

cout<<"请输入第"<<i+1<<"组x的值:";

cin>>d[i]x;

cout<<"请输入第"<<i+1<<"组y的值:";

cin>>d[i]y;

system("cls");

}

cout<<"请输入x的值:";//获得变量x的值

cin>>x;

while(1)

{

int choice=3;

cout<<"请您选择使用哪种插值法计算:"<<endl;

cout<<" (0):退出"<<endl;

cout<<" (1):Lagrange"<<endl;

cout<<" (2):Newton"<<endl;

cout<<"输入你的选择:";

cin>>choice;//取得用户的选择项

if(choice==2)

{

cout<<"你选择了牛顿插值计算方法,其结果为:";

y=Newton(x,count);break;//调用相应的处理函数

}

if(choice==1)

{

cout<<"你选择了拉格朗日插值计算方法,其结果为:";

y=lagrange(x,count);break;//调用相应的处理函数

}

if(choice==0)

break;

system("cls");

cout<<"输入错误!!!!"<<endl;

}

cout<<x<<" , "<<y<<endl;//输出最终结果

}

#include<stdioh>

it main()

{int a,b;

scanf("%d%d",&a,&b);

printf("%d+%d=%d\n",a+b);

printf("%d-%d=%d\n",a-b);

printf("%d%d=%d\n",ab);

printf("%d/%d=%2f\n",(float)a/b);

return 0;

}

以上就是关于java的一个小程序,帮我看看哪不对全部的内容,包括:java的一个小程序,帮我看看哪不对、一个非常简单的C语言小程序,但就是找不出小错误在哪、麻烦大家给我看看我这个小程序,我资质不够,还发现不了其中的错误!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10219405.html

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

发表评论

登录后才能评论

评论列表(0条)

保存