홈>
반 친구와 함께 학교 과제를하고 있습니다. 우리는 당신이 택시를 시작하고 중지하고, 현재 가격을 요구하고 택시가 멈출 때 총 가격을 얻을 수있는 택시 응용 프로그램을 만들고 있습니다. 현재는 잘 작동합니다. 그러나 예를 들어 택시 1을 시작한 다음 택시 2를 시작하면 문제가 발생합니다. 택시 1의 시작 및 종료 시간은 새 객체 (택시 2) 시작 및 종료 시간으로 덮어 씁니다. 사용자가 시스템에 입력 한 번호에 따라 배열 목록을 표시합니다.
Main.java의 코드 :
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Taxi taxi = new Taxi();
System.out.println("Hej og velkommen til Damn Fast Taxis.");
boolean isEnd = false;
DecimalFormat decimalFormat = new DecimalFormat("#.0");
while(!isEnd) {
Taxi chosenTaxi;
System.out.println("1. Start en taxi.");
System.out.println("2. Stop en taxi.");
System.out.println("3. Pause en taxi.");
System.out.println("4. Spørg efter pris.");
System.out.println("5. Gratis tur.");
System.out.println("6. Tilføj antal taxier.");
Scanner sc = new Scanner(System.in);
String choice = sc.nextLine();
switch (choice) {
case "1":
if (taxi.getTaxiListPrint().size()>=1) {
Scanner startTaxiNumber = new Scanner(System.in);
int numberChoice = startTaxiNumber.nextInt();
chosenTaxi = taxi.chooseTaxi(numberChoice);
chosenTaxi.setStartTime();
break;
} else {
System.out.println("Ingen taxier er oprettet i systemet.");
break;
}
case "2":
if (taxi.getTaxiListPrint().size()>=1) {
Scanner endTaxiNumber = new Scanner(System.in);
int numberChoice = endTaxiNumber.nextInt();
chosenTaxi = taxi.chooseTaxi(numberChoice);
chosenTaxi.setEndTime();
if (!chosenTaxi.isStopped()) {
System.out.println("Turen varede " + decimalFormat.format(((chosenTaxi.getEndTime() - chosenTaxi.getStartTime()) / 100)*0.1) + " sekunder.");
Price price = new Price();
String finalPrice = price.calculatePrice(chosenTaxi.getStartTime(), chosenTaxi.getEndTime(), decimalFormat);
System.out.println("Pris: " + finalPrice + " dollars.");
chosenTaxi.setStopped(true);
} else {
System.out.println("Denne taxi er allerede blevet stoppet.");
}
break;
} else {
System.out.println("Ingen taxier er oprettet i systemet.");
}
case "3":
break;
case "4":
if (taxi.getTaxiList().size()>=1) {
Scanner currentPriceTaxiNumber = new Scanner(System.in);
int numberChoice = currentPriceTaxiNumber.nextInt();
Taxi currentChosenTaxi = taxi.chooseTaxi(numberChoice);
currentChosenTaxi.setEndTime();
if (!currentChosenTaxi.isStopped()) {
Price priceNow = new Price();
String currentPrice = priceNow.calculatePrice(currentChosenTaxi.getStartTime(), currentChosenTaxi.getEndTime(), decimalFormat);
System.out.println("Pris: " + currentPrice + " dollars.");
} else {
System.out.println("Denne taxi er allerede blevet stoppet.");
}
break;
} else {
System.out.println("Ingen taxier er oprettet i systemet.");
break;
}
case "5":
break;
case "6":
System.out.println("Hvor mange taxier vil du tilføje?");
Scanner taxaNumber = new Scanner(System.in);
int number = taxaNumber.nextInt();
for (int i = 0; i<number;i++) {
taxi.addTaxi(taxi);
}
System.out.println(number + " " + "Taxa'er tilføjet!");
break;
default:
isEnd = true;
break;
택시 수업 :
import java.util.ArrayList;
import java.util.List;
public class Taxi {
private long startTime;
private long endTime;
private boolean isStopped = false;
private List<Taxi> taxiList = new ArrayList<>();
public void addTaxi(Taxi taxi) {
taxiList.add(taxi);
}
public Taxi chooseTaxi(int choice) {
return taxiList.get(choice - 1);
}
public List<Taxi> getTaxiListPrint() {
for(int i = 1; i<taxiList.size() + 1;i++) {
System.out.println("Taxi: " + i);
}
return taxiList;
}
public List<Taxi> getTaxiList() {
return taxiList;
}
public long getStartTime() {
return startTime;
}
public long getEndTime() {
return endTime;
}
public boolean isStopped() {
return isStopped;
}
public void setStartTime() {
this.startTime = System.currentTimeMillis();
}
public void setEndTime() {
this.endTime = System.currentTimeMillis();
}
public void setStopped(boolean stopped) {
isStopped = stopped;
}
}
코드가 지저분해서 죄송합니다. 언어를 처음 접했습니다. 짧은 질문은 새 택시 인스턴스를 만들 때마다 프로그램이 덮어 쓰이지 않도록 다른 개체를 정의하는 방법입니다.
정말 감사합니다. / 닉
- 답변 # 1
관련 자료
- arraylist - 배열 목록의 Java 객체
- data binding - 자바는 JSON에서 객체 목록으로 변환
- flutter - 객체 목록을지도 목록으로 변환하는 방법
- javascript - 고유 한 코드로 개체 배열을 그룹화하려면 어떻게해야합니까?
- 자바에서 객체의 2D 배열 만들기
- c# - Linq를 사용하여 고유 한 개체를 가져 오는 방법
- Java의 모든 직렬 포트 나열
- 목록에서 두 개의 개별 목록으로 Java 8 파티션 데이터
- amazon web services - AWS S3 목록 객체 불일치
- JSON 객체를 Java 클래스에 매핑
- javascript - _reject 및 _uniqBy 함수를 사용하여 lodash로 고유 한 값을 갖기 위해 객체 배열을 조작하고 있습니다
- Java에서와 같이 PHP에서 객체에 액세스
- javascript - 고유 한 값으로 할 일 목록
- javascript - 맵을 객체 목록으로 변환
- dart - 내부의 객체 목록을 기준으로 객체 목록 정렬
- r - 객체 목록을위한 setGeneric
관련 질문
- JAXB를 사용하여 'Object' 데이터 유형의 변수가 있는 Java 객체를 변환(마샬링)할 수 있습니까?
- java : 이 get 메서드가 null 값을 반환하는 이유는 무엇입니까?
- java : "메서드 settingName(String)이 StudentName 유형에 대해 정의되지 않았습니다" 오류가 발생하는 이유는 무엇입니까?
- Java가 참조로 전달되는 경우. 왜 이렇게 반환된 객체를 수정할 수 없습니까?
- java : 개체 컬렉션에서 2개의 다른 필드를 비교하는 비교기를 어떻게 작성합니까?
- 사용자가 Java로 값을 제공하는 각 인스턴스에 대해 자동으로 객체 생성
택시 클래스에서 이러한 메소드를 정적으로 변경해야하는 가장 간단한 변경 사항은 다음과 같습니다.
이 메소드를 정적 형식으로 변경하십시오 (예 :
).로 변경
그런 다음 관리자에게 다른 택시를 추가하십시오 :
와이즈 비즈 와이즈 비즈 루프 바깥에 놓으면 매번 사용할 수 있습니다. yz