首先以这道题目为例子:
题目:货物的运输费用与距离和重量有关,距离S越远,每公里的运费越低。
总运输费用Exp:的计算公式为:Exp=P*W*S(1-d) ,
式中P为每公里每吨货物的基本运费、W为货物重量(T)、S为运输距离(km),d为折扣,折扣率与距离有关,标准如下:
0<S<250 km (d=0)
250≤S<500 km (d=2%)
500≤S<1000 km (d=5%)
1000≤S<2000 km (d=8%)
2000≤S<3000 km (d=10%)
3000≤S (d=15%)
请根据上述关系及公式,假设P=160,W=1000,试使用分支结构实现输入任意一个运输距离S(利用Scanner类对象输入数据),输出运输的总费用为多少。
以下是我刚开始写的代码:
import java.util.Scanner;
public class Text_1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入距离s:");
int s=scan.nextInt();
int p=160;
int w=1000;
if(s>0&&s<250) {
double d=0;
}else if(s>=250 && s<500){
double d=0.02;
}else if(s>=500 && s<1000){
double d=0.05;
}else if(s>=1000 && s<2000) {
double d=0.08;
}else if(s>=2000 && s<3000) {
double d=0.1;
}else{
double d=0.15;
}
System.out.println("总运费Exp="+p*w*s*(1-d)+"。");
}
}
代码 System.out.println("总运费Exp="+p*w*s*(1-d)+"。");这一行的变量d的出现了错误
(线程“主”中的异常java.lang.Error:未解决的编译问题:d无法解析为变量),意思就是d变量没有定义对,我把double类型的变量d的初始化每次都定义在了else里面,结果导致出现了此错误,然后,我又觉得每个else都定义d是不是太麻烦,会不会是这里出错呢,接下来我把刚刚的代码改了,在分支结构的前面先定义了d,接下来的每个else都只用直接给d赋值,然后运行就通过了。(恍然大悟)
以下是最终的结果:
import java.util.Scanner;
public class Text_1 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入距离s:");
int s=scan.nextInt();
int p=160;
int w=1000;
double d=0;
if(s>0&&s<250) {
d=0;
}else if(s>=250 && s<500){
d=0.02;
}else if(s>=500 && s<1000){
d=0.05;
}else if(s>=1000 && s<2000) {
d=0.08;
}else if(s>=2000 && s<3000) {
d=0.1;
}else{
d=0.15;
}
System.out.println("总运费Exp="+p*w*s*(1-d)+"。");
}
}