求助java编程解答!!!!!!!!!!!!!!!!!!!!!!!!!

2025-06-21 14:00:41
推荐回答(3个)
回答1:

既然用JAVA,那就来个面向对象的分析

关键处: 需要一个"选择器"来依据数值区间得到一个反馈值,
定义接口

public interface Responsor {
public Object response();
}

定义实现

final public class PriceResponsor implements Responsor{
private int ticketsCount;
public PriceResponsor(int ticketsCount) {
this.ticketsCount = ticketsCount;
}
/**
* business implement
* @return the unit price according as tickets total number
*/
public Integer response() {
if (ticketsCount < 0)
throw new IllegalArgumentException("negative is invalid");

if (ticketsCount < 11) return 20;
if (ticketsCount >= 11 && ticketsCount < 21) return 15;
if (ticketsCount >= 21 && ticketsCount < 31) return 10;
if (ticketsCount >= 31) return 8;
return null;
}

public Integer getTotalPrice() {
Integer I = response();
if (I == null) return null;
return ticketsCount*I;
}
}

演示代码:(从命令行输入一个整数表示票的张数)

final public class TicketPriceDemo {
private static final String USAGE = "TicketPriceDemo [a integer represents the ticketsCount]";
private static final String PARAMETER_TYPE="Parameter should be a integer";
public static void main(String[] args) {
if (args.length != 1) {
System.out.println(USAGE);
System.exit(1);
}

int c = 0;
try {
c = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
System.out.println(PARAMETER_TYPE+"\r\n"+USAGE);
System.exit(1);
}

PriceResponsor responsor = new PriceResponsor(c);
System.out.println("unit price : " + responsor.response());
System.out.println("total price:" + responsor.getTotalPrice());
}
}

回答2:

public class Example{
public static void main(String args[]){
BufferedReader br = new Buffered(
new InputStreamReader(System.in));
int ret = Integer.parseInt(br.readLine());
String str = "票价是 ";
if(ret<=10)
System.out.println(str+ret*20);
else if(ret<=20)
System.out.println(str+ret*15);
else if(ret<=30)
System.out.println(str+ret*10);
else
System.out.println(str+ret*8);
}
}

回答3:

不错,不错!可以啊,竟然是91年的,我敬佩!

DestroyofLight 少了点东西,这样试试看:
---------------------------------------------
import java.io.BufferedReader;
import java.io.InputStreamReader;

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

try
{
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
int ret = Integer.parseInt(br.readLine());
String str = "price is ";
if(ret<=10)
System.out.println(str+ret*20);
else if(ret<=20)
System.out.println(str+ret*15);
else if(ret<=30)
System.out.println(str+ret*10);
else
System.out.println(str+ret*8);
}
catch(Exception exp)
{
System.out.println(exp.getMessage());
}

}
}
----------------------------------------------------
hardneedl 不但结果不错,而且思路很正规,不愧是大哥级人物,这是我的测试结果:你把分给他吧
----------------------------------------------------
unit price : 15
total price:180