SOGO論壇
標題:
Java 程式碼問題
[列印本頁]
作者:
tyc8112
時間:
2011-12-4 23:56:05
標題:
Java 程式碼問題
public class resturant
{
public static void main(String[] args)
{
int x = 0;
int i = 0;
int num = 0;
String rain = null;
System.out.println("歡迎使用此餐廳經營系統");
System.out.println(" ");
System.out.println("以下是使用本系統時需要的指令:");
System.out.println("(" + 1 + ")" + "new 客人種類 餐點價格:新客人入內 ");
System.out.println("(" + 2 + ")" + "pass 時間:推移模擬時間");
System.out.println("(" + 3 + ")" + "rain start:讓模擬世界下雨");
System.out.println("(" + 4 + ")" + "rain end:讓模擬世界停雨");
System.out.println("(" + 5 + ")" + "status:顯示資訊");
System.out.println("(" + 6 + ")" + "exit:離開系統");
System.out.println("註:客人類型分為a、b、c、d共四種");
while (x==0)
{
System.out.println(" ");
System.out.println("請輸入指令..");
String order = ConsoleIn.readLine();
String[] sorder = order.split(" ");
customer[] cus = new customer[100];
if (sorder[0].equals("new")){
cus[i] = new customer();
if (sorder[1].equals("a")){
cus[i].time = 30;
}
if (sorder[1].equals("b")){
cus[i].time = 40;
}
if (sorder[1].equals("c")){
cus[i].time = 20;
}
if (sorder[1].equals("d")){
cus[i].time = 50;
}
cus[i].type = sorder[1];
cus[i].price = Integer.parseInt(sorder[2]);
i++;
num++;
}
if (sorder[0].equals("pass")){
cus[i] = new customer();
int passtime = Integer.parseInt(sorder[1]);
int k = 0;
cus[k].passtime = passtime;
k++;
for (int j = 0; j < 100; j++){
cus[j].time = cus[j].time - cus[j].passtime;
if (cus[j].time <= 0){
num--;
}
}
}
if (sorder[0].equals("rain")){
if (sorder[1].equals("start")){
cus[i] = new customer();
for (int j = 0; j < 100; j++){
if (cus[j].type.equals("a")){
cus[j].time = cus[j].time * 2;
}
if (cus[j].type.equals("b")){
cus[j].time = cus[j].time / 2;
}
if (cus[j].type.equals("c")){
cus[j].time = cus[j].time + 20;
}
if (cus[j].type.equals("d")){
cus[j].time = cus[j].time - 15;
}
}
rain = "yes";
}
if (sorder[1].equals("end"))
{
rain = "no";
}
}
if (sorder[0].equals("status")){
cus[i] = new customer();
System.out.println("◎客人資訊");
for (int j = 0; j < 100; j++){
if (cus[j].time > 0){
System.out.println("客人種類:" + cus[j].type);
System.out.println("餐點價格:" + cus[j].price + "元");
System.out.println("用餐時間:" + cus[j].passtime + "分鐘");
System.out.println("剩餘時間:" + cus[j].time + "分鐘");
}
}
System.out.println("◎餐廳資訊");
System.out.println("目前用餐人數:" + num + "人");
int total = 0;
int totaltime = 0;
for (int j = 0; j < 100; j++){
if (cus[j].time <= 0){
total = total + cus[j].price;
}
}
System.out.println("總營業額:" + total + "元");
for (int j = 0; j < 100; j++){
totaltime = totaltime + cus[j].passtime;
}
System.out.println("總營業時間:" + totaltime + "分鐘");
if (rain.equals("yes")){
System.out.println("天氣狀況:" + "雨天");
}
if (rain.equals("no")){
System.out.println("天氣狀況:" + "無雨");
}
}
if (sorder[0].equals("exit")){
cus[i] = new customer();
System.out.println("◎餐廳資訊");
System.out.println("目前用餐人數:" + num + "人");
int total = 0;
int totaltime = 0;
for (int j = 0; j < 100; j++){
if (cus[j].time <= 0){
total = total + cus[j].price;
}
}
System.out.println("總營業額:" + total + "元");
for (int j = 0; j < 100; j++){
totaltime = totaltime + cus[j].passtime;
}
System.out.println("總營業時間:" + totaltime + "分鐘");
if (rain.equals("yes")){
System.out.println("天氣狀況:" + "雨天");
}
if (rain.equals("no")){
System.out.println("天氣狀況:" + "無雨");
}
break;
}
}
}
}
===========
public class customer
{
public String type;
public int price;
public int time;
public int passtime;
}
==========
這是我的程式碼 compile的時候會過
但是在執行程式的時候 只要輸入指令
他就會跳出一串字母 什麼nullpointer的
找了好久 還是毫無頭緒
哪位大大 能幫我修改嗎 非常感謝
作者:
helper197
時間:
2011-12-5 02:22:46
嗨嗨嗨 大大您好阿
請您把
System.out.println(" ");
System.out.println("請輸入指令..");
String order = ConsoleIn.readLine();
String[] sorder = order.split(" ");
複製代碼
改成
System.out.println(" ");
System.out.println("請輸入指令..");
String order = "";
BufferedReader ConsoleIn = new BufferedReader(new InputStreamReader(System.in));
try{
order = ConsoleIn.readLine();
}catch(IOException e){}
String[] sorder = order.split(" ");
複製代碼
試試看唷!!!
作者:
tyc8112
時間:
2011-12-5 02:47:45
helper197 發表於 2011-12-5 02:22
嗨嗨嗨 大大您好阿
請您把改成試試看唷!!!
沒辦法耶....不過還是謝謝你
作者:
helper197
時間:
2011-12-5 09:24:35
嗨嗨嗨 大大您好阿
因為阿 「他就會跳出一串字母 什麼nullpointer的」 這個訊息應該是告訴您 您的ConsoleIn並沒有宣告乘一個物件的樣子
啊 小弟 沒用過 java 不過昨天編譯時 他告訴我 「new BufferedReader(new InputStreamReader(System.in))」 需要給錯誤處理
所以需要在加上 try 來處理, 然後 偶就編譯成功了
還是您要先加上去 後 再把您加上去的Code 貼出來 小弟來試試看哩
加油阿 :D
作者:
helper197
時間:
2011-12-5 10:15:37
這個是小弟整理過得 可以編譯過得
不過, sorder 陣列的部份您可能要改一下喔.. 才能正常運作
import java.io.*;
import java.io.Console;
public class resturant
{
public static void main(String[] args)
{
int x = 0;
int i = 0;
int num = 0;
String rain = null;
System.out.println("Welcome");
System.out.println(" ");
System.out.println("Command List:");
System.out.println("(" + 1 + ")" + "new Customer");
System.out.println("(" + 2 + ")" + "pass Time");
System.out.println("(" + 3 + ")" + "rain Start");
System.out.println("(" + 4 + ")" + "rain Stop");
System.out.println("(" + 5 + ")" + "status");
System.out.println("(" + 6 + ")" + "exit System");
System.out.println("PS: Customer [A,B,C,D]");
while (x==0)
{
System.out.println(" ");
System.out.println("Command. Input");
String order = "";
BufferedReader ConsoleIn = new BufferedReader(new InputStreamReader(System.in));
try{
order = ConsoleIn.readLine();
}catch(IOException e)
{}
String[] sorder = order.split(" ");
customer[] cus = new customer[100];
if (sorder[0].equals("new"))
{
cus[i] = new customer();
if (sorder[1].equals("a"))
{
cus[i].time = 30;
}
if (sorder[1].equals("b"))
{
cus[i].time = 40;
}
if (sorder[1].equals("c"))
{
cus[i].time = 20;
}
if (sorder[1].equals("d"))
{
cus[i].time = 50;
}
cus[i].type = sorder[1];
cus[i].price = Integer.parseInt(sorder[2]);
i++;
num++;
}
if (sorder[0].equals("pass"))
{
cus[i] = new customer();
int passtime = Integer.parseInt(sorder[1]);
int k = 0;
cus[k].passtime = passtime;
k++;
for (int j = 0; j < 100; j++)
{
cus[j].time = cus[j].time - cus[j].passtime;
if (cus[j].time <= 0)
{
num--;
}
}
}
if (sorder[0].equals("rain"))
{
if (sorder[1].equals("start"))
{
cus[i] = new customer();
for (int j = 0; j < 100; j++)
{
if (cus[j].type.equals("a"))
{
cus[j].time = cus[j].time * 2;
}
if (cus[j].type.equals("b"))
{
cus[j].time = cus[j].time / 2;
}
if (cus[j].type.equals("c"))
{
cus[j].time = cus[j].time + 20;
}
if (cus[j].type.equals("d"))
{
cus[j].time = cus[j].time - 15;
}
}
rain = "yes";
}
if (sorder[1].equals("end"))
{
rain = "no";
}
}
if (sorder[0].equals("status"))
{
cus[i] = new customer();
System.out.println("◎客人資訊");
for (int j = 0; j < 100; j++)
{
if (cus[j].time > 0)
{
System.out.println("客人種類:" + cus[j].type);
System.out.println("餐點價格:" + cus[j].price + "元");
System.out.println("用餐時間:" + cus[j].passtime + "分鐘");
System.out.println("剩餘時間:" + cus[j].time + "分鐘");
}
}
System.out.println("◎餐廳資訊");
System.out.println("目前用餐人數:" + num + "人");
int total = 0;
int totaltime = 0;
for (int j = 0; j < 100; j++)
{
if (cus[j].time <= 0)
{
total = total + cus[j].price;
}
}
System.out.println("總營業額:" + total + "元");
for (int j = 0; j < 100; j++)
{
totaltime = totaltime + cus[j].passtime;
}
System.out.println("總營業時間:" + totaltime + "分鐘");
if (rain.equals("yes"))
{
System.out.println("天氣狀況:" + "雨天");
}
if (rain.equals("no"))
{
System.out.println("天氣狀況:" + "無雨");
}
}
if (sorder[0].equals("exit"))
{
cus[i] = new customer();
System.out.println("◎餐廳資訊");
System.out.println("目前用餐人數:" + num + "人");
int total = 0;
int totaltime = 0;
for (int j = 0; j < 100; j++)
{
if (cus[j].time <= 0)
{
total = total + cus[j].price;
}
}
System.out.println("總營業額:" + total + "元");
for (int j = 0; j < 100; j++)
{
totaltime = totaltime + cus[j].passtime;
}
System.out.println("總營業時間:" + totaltime + "分鐘");
if (rain.equals("yes"))
{
System.out.println("天氣狀況:" + "雨天");
}
if (rain.equals("no"))
{
System.out.println("天氣狀況:" + "無雨");
}
break;
}
}
}
}
複製代碼
歡迎光臨 SOGO論壇 (https://oursogo.com/)
Powered by OURSOGO.COM