java 간이 주문 기 구현
swing 도구 모음 을 사용 하여 완성 합 니 다.이틀 의 시간 이 걸 리 고 어 려 운 점 이 없 는 것 은 모두 기본 지식 입 니 다.
테이블 번 호 를 입력 한 후,이 테이블 에 사람 이 없 으 면 주문 할 수 있다.
다음은 완성 과정 에서 만난 문 제 를 정리 하 겠 습 니 다.
빈 포인터 이상
처음에 테이블 번 호 를 입력 하고 확인 을 눌 렀 을 때 빈 포인터 에 이상 한 정보 가 계속 나 왔 습 니 다.처음에 초기 화 를 하지 않 은 원인 이 라 고 생각 했 습 니 다.이상 한 원인 도 이것 을 가리 키 는 것 이 었 습 니 다.그런데 한참 동안 잘못 한 것 을 발 견 했 습 니 다.이상 하 게 도 if 와 else if 의 사용 에 잘못 되 었 습 니 다.
처음에 코드 는 이렇게 여러 개의 if 에 else 를 더 했 습 니 다.else 는 가장 가 까 운 if 와 일치 하기 때문에 여러 개의 if 를 실 행 했 을 때 첫 번 째 if 가 else 를 실 행 했 을 때 도 실 행 됩 니 다.그래서 제 가 확인 단 추 를 눌 렀 을 때 else 에 있 는 것 입 니 다. new OrderDishes(mealMenus,menusName,file).setVisible(true);따라 하기 도 했 는데 이때 mealmenos 가 초기 화 되 지 않 아 빈 포인터 이상 이 생 겼 어 요.
if(e.getSource()==querenButton){
if(idText.getText().length()!=0){
//
}
if(e.getSource()==showButton){
//
}
if(e.getSource()==stopOrderingButton){
}else{
String menusName=null;
if(e.getSource()==meatButton){
//
}
if(e.getSource()==vegetarianButton){
//
}
if(e.getSource()==stapleFoodButton){
//
}
if(e.getSource()==soupAndPorridgeButton){
//
}
new OrderDishes(mealMenus,menusName,file).setVisible(true);// ,new , mealMenus
}
여러 if 를 if,else if 로 바 꾸 면 문 제 를 해결 할 수 있 습 니 다.if 를 실행 할 때 else if 가 실행 되 지 않 습 니 다.(1 년 동안 배 운 자바 가 이런 실 수 를 할 줄 은 몰 랐 습 니 다.실 패 했 습 니 다)
if(e.getSource()==querenButton){
if(idText.getText().length()!=0){
//
}
else if(e.getSource()==showButton){
//
}
else if(e.getSource()==stopOrderingButton){
}else{
String menusName=null;
if(e.getSource()==meatButton){
//
}
else if(e.getSource()==vegetarianButton){
//
}
else if(e.getSource()==stapleFoodButton){
//
}
else if(e.getSource()==soupAndPorridgeButton){
//
}
new OrderDishes(mealMenus,menusName,file).setVisible(true);
}
Randomaccessfile이 프로그램 은 randomaccessfile 을 사용 하여 메뉴 에 파일 을 기록 하고 파일 을 읽 습 니 다.randomaccessfile 의 역할 을 한층 더 깨 닫 게 해 주 었 습 니 다.randomaccessfile 은 I/O 에서 기능 이 가장 풍부 한 파일 접근 클래스 입 니 다.seek()방법 으로 파일 에 접근 할 수 있 는 임의의 방법 을 제공 하여 파일 내용 에 접근 할 수 있 습 니 다.이 프로그램 은 seek()를 사용 하여 메뉴 를 기록 하기 위해 매번 파일 포인 터 를 맨 뒤에 놓 지만 readDouble 을 사용 하여 가격 을 파일 에 기록 할 때 가격 이 어 지 럽 습 니 다.
//
try {
RandomAccessFile in=new RandomAccessFile(file,"r");
String mealName=null;
while((mealName=in.readUTF())!=null){
showArea.append("
"+mealName);
String mealPrice=in.readUTF();
showArea.append(" "+mealPrice);
totalPrice=totalPrice+Double.parseDouble(mealPrice);
}
//
try {
RandomAccessFile out=new RandomAccessFile(file,"rw");
if(file.exists()){
long length=file.length();
out.seek(length);
}
for (int i=0;i<orderDishes.size();i++){
out.writeUTF(orderDishes.get(i).getName());
String str=String.valueOf(orderDishes.get(i).getPrice());
System.out.println(str);
out.writeUTF(str);
}
그 다음 에 저 는 가격 을 String 으로 바 꾸 고 파일 에 기록 하 겠 습 니 다.총 가격 을 계산 할 때 Double 으로 바 꾸 겠 습 니 다.그러면 가격 이 파일 에 정확하게 기록 할 수 있 지만 일부 기호 코드 가 있 습 니 다.좋 은 방법 을 시도 해 보 았 지만 이런 기호 코드 를 해결 하지 못 했 습 니 다.나중에 기술 이 좋아 지면 다시 해결 하 겠 습 니 다.
Box 좋아요.
이 프로그램 은 HashSet 을 사용 하여 테이블 번 호 를 기록 하여 사람 이 있 는 지,완선 되 지 않 은 지 판단 한 다음 에 데이터 베 이 스 를 사용 하여 개선 할 것 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.