Java 将If-Else条件添加到数组中
我正在进行以下程序的isseue 这是全部代码,我最近开始学习编程,这是我的第一个项目,所以我不太擅长缩进和OOP概念。如果你们中的一位专家能把这个程序变成OOP,那对我将是一个很大的帮助Java 将If-Else条件添加到数组中,java,if-statement,Java,If Statement,我正在进行以下程序的isseue 这是全部代码,我最近开始学习编程,这是我的第一个项目,所以我不太擅长缩进和OOP概念。如果你们中的一位专家能把这个程序变成OOP,那对我将是一个很大的帮助 import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; class Car { private String make; private String model; pr
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
class Car {
private String make;
private String model;
private String regNo;
private int deposit;
private int rate;
public Car(String newMake, String newModel, String newRegNo,int newDeposit, int newRate)
{
make = newMake;
model = newModel;
regNo = newRegNo;
deposit = newDeposit;
rate = newRate;
}
public String getMake() {
return make;
}
public String getModel() {
return model;
}
public String getRegNo() {
return regNo;
}
public int getDeposit() {
return deposit;
}
public int getRate() {
return rate;
}
}
public class carrenta {
public static void main(String[] args) {
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yy HH:mm");
Date date = new Date();
System.out.println(dateFormat.format(date));
List<Car> carlist = new ArrayList();
carlist.add(new Car("Toyota", "corolla", "TA7896", 1500, 1800));
carlist.add(new Car("Toyota", "vitz", "TV9872", 1500, 1800));
carlist.add(new Car("Nissan", "paso", "NP1543", 1500, 1500));
carlist.add(new Car("Honda", "city", "HC4692", 1800, 1800));
carlist.add(new Car("Honda", "civic", "HC4521", 2000, 1600));
carlist.add(new Car("Honda", " accord", "HA5463", 2500, 2000));
carlist.add(new Car("Mitsubishi", "lancer", "ML4521", 2000, 1500));
Scanner input = new Scanner(System.in);
boolean modelFound = false;
while (!modelFound) {
System.out.print("Enter model to rent: ");
String model = input.nextLine();
for(Car s : carlist){
if (model.equalsIgnoreCase(s.getModel())) {
modelFound = true;
System.out.println("Model " + model + " is available");
System.out.print("Enter number of days: ");
int days = input.nextInt();
System.out.println("***************Details*****************");
int cost = (days * s.getRate()) + s.getDeposit();
System.out.println("Deposit DailyRate Duration TotalCost");
System.out.println(s.getDeposit() + " " + s.getRate()+ " " + days + " " + cost);
System.out.print("Proceed to rent?( y/n ): ");
String dec = input.next();
switch (dec) {
case "y":
System.out.println("Enter Customer Name: ");
String name = input.next();
System.out.println("Enter NIC Number: ");
int num = input.nextInt();
System.out.println("************Receipt*************");
System.out.println( " Date Name NICNo Car RegNo Duration TCost");
System.out.println(date+" "+name + " " + num + " " + model
+ " " + s.getRegNo() + " " + days + " "+cost);
break;
case "n":
System.out.println("Serving Next Customer: ");
break;
}
}
else{
System.out.println("Please enter a valid model");
}
}
}
}
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.*;
班车{
私人字符串制作;
私有字符串模型;
私有字符串regNo;
私人存款;
私人利率;
公共汽车(字符串newMake、字符串newModel、字符串newRegNo、int newDeposit、int newRate)
{
make=newMake;
模型=新模型;
regNo=newRegNo;
存款=新存款;
利率=新利率;
}
公共字符串getMake(){
退货;
}
公共字符串getModel(){
收益模型;
}
公共字符串getRegNo(){
返回regNo;
}
公共存款{
退还保证金;
}
public int getRate(){
回报率;
}
}
公共级卡伦塔酒店{
公共静态void main(字符串[]args){
DateFormat DateFormat=新的SimpleDateFormat(“日/月/年HH:MM”);
日期=新日期();
System.out.println(dateFormat.format(date));
List carlist=new ArrayList();
添加(新车(“丰田”、“花冠”、“TA7896”、1500、1800”);
添加(新车(“丰田”、“维茨”、“TV9872”、1500、1800”);
添加(新车(“日产”、“帕索”、“NP1543”、1500、1500”);
添加(新车(“本田”、“城市”、“HC4692”、1800、1800”);
添加(新车(“本田”、“思域”、“HC4521”、2000、1600”);
添加(新车(“本田”、“雅阁”、“HA5463”、2500、2000));
carlist.add(新车(“三菱”、“兰瑟”、“ML4521”、2000、1500”);
扫描仪输入=新扫描仪(System.in);
布尔modelFound=false;
而(!modelFound){
System.out.print(“输入要租赁的型号:”);
字符串模型=input.nextLine();
适用于(汽车s:carlist){
if(model.equalsIgnoreCase(s.getModel())){
modelFound=true;
System.out.println(“模型”+模型+”可用);
System.out.print(“输入天数:”);
int days=input.nextInt();
System.out.println(“**********************详细信息**********************”);
整数成本=(天*s.getRate())+s.getDeposit();
系统输出打印项次(“存款日期限总成本”);
System.out.println(s.getDeposit()+“”+s.getRate()+“”+days+“”+cost);
系统输出打印(“继续租赁?(y/n):”;
String dec=input.next();
开关(dec){
案例“y”:
System.out.println(“输入客户名称:”);
String name=input.next();
System.out.println(“输入NIC编号:”);
int num=input.nextInt();
System.out.println(“***************收据****************”);
System.out.println(“日期名称NICNo Car RegNo Duration TCost”);
System.out.println(日期+名称+数量+型号
+“+s.getRegNo()+”+天+“+成本);
打破
案例“n”:
System.out.println(“服务下一个客户:”);
打破
}
}
否则{
System.out.println(“请输入有效的模型”);
}
}
}
}
}您可以尝试运行while循环:
boolean modelFound = false;
while (!modelFound) {
// Ask question, take input
String model = input.next();
for (Object object : carList) {
/* etc ... */
if (model.equalsIgnoreCase(car.getModel()) {
modelFound = true;
/* other code */
}
}
另外,假设您的CarList使用了一个汽车通用代码:
List CarList
,那么您不需要每次都进行强制转换,只需将for each循环作为for(Car c:CarList)
运行,因为您的代码组织得不是很好,所以很难判断在哪里。请添加正确的缩进,以便我们能够轻松地找出循环和条件体。然后在问题块周围添加一个循环
。您已经编写了这个程序,就好像您是用BASIC编写的一样。采用更面向对象的范例。通过使用对象,不仅您的代码更具可读性,而且您的程序也更易于维护和扩展。@Rouge非常感谢您的工作,但似乎还有另一个问题。当我把一个else语句放在最后,它是System.out.println(“请输入一个有效的模型”);它打印上述语句的次数与数组中的值的数量相同。你能用当前使用的代码更新OP吗?我已经更新了程序,请看一看。如果你把它放在for循环中,并且每辆车的型号都是错误的,那么它会说每辆车都是错误的。看看你在比较什么。(我将重新格式化代码并查看)-正如您所看到的,您将获得模型,然后将其与您的汽车列表中的每个值进行比较。但是,当车型类型不相等时,则为每辆车打印(“请输入有效车型”)。我不建议在for循环中编写else
,而是建议检查modelFound在for循环外但在while循环内是否仍然为falseif(!modelFound){System.out.println(“输入有效模型”);}