Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 2393|回复: 8
打印 上一主题 下一主题

debug, 求助

[复制链接]

0

主题

0

好友

20

积分

初级会员

Rank: 1

跳转到指定楼层
1#
发表于 2010-2-23 12:58 AM |只看该作者 |倒序浏览
问题如下:
Write a structured Java program program to calculate the parking fare for
customers who park their cars in a parking lot when the following information is
given:
a) A character showing the type of vehicle: C for car, B for bus, T for truck
b) An integer between 0 and 24 showing the hour the vehicle entered the lot
c) An integer between 0 and 60 showing the minute the vehicle entered the lot
d) An integer between 0 and 24 showing the hour the vehicle left the lot
e) An integer between 0 and 60 showing the minute the vehicle left the lot

Vehicle First Rate Second Rate
CAR RM 0.00/hour first 3 hour RM 1.50/hour after 3 hour
TRUCK RM 1.00/hour first 2 hour RM 2.30/hour after 2 hour
BUS RM 2.00/hour for first hour RM 3.70/hour after first hour

The input data consist of a character and a set of four integers representing the
type of vehicle and the entering and leaving hours and minutes. But these
pieces of data must be input into the computer in a user-friendly way. In other
words, the computer must prompt the user to enter each piece of data as show
below. (Note: Red colour indicates typical data)
Type of vehicle? C
Hour vehicle entered lot (0-24)? 14
Minute vehicle entered lot (0-60)? 23
Hour vehicle left lot (0-24)? 18
Minute vehicle left lot (0-60)? 8

The output format is shown below:
PARKING LOT CHARGE
Type of vehicle: Car or Bus or Truck
TIME-IN XX : XX
TIME-OUT XX : XX
-------
PARKING TIME XX : XX
ROUNDED TOTAL XX
-------
TOTAL CHARGE RM XX.XX

This program must first calculate the actual time spent in the parking lot for
each vehicle. You may use the following algorithm:
a) Compare the minute portion of the leaving and the entering time. If the first
one is smaller than the second,
- Add 60 to the minute portion of the leaving time
- Subtract 1 from the hour portion of the leaving time
b) Subtract the hour portions
c) Subtract the minute portions
d) Since there are no fractional hour charges, the program must also round the
parking time up to the next hour before calculating the charge. The program
should use switch statement to distinguish between the different types of
vehicles

Note: You CANNNOT use GUI/Applet and/or object-oriented approach in solving
this question.




收藏收藏0

0

主题

0

好友

20

积分

初级会员

Rank: 1

2#
发表于 2010-2-23 01:01 AM |只看该作者
我的coding如下

import java.util.Scanner;

public class test

{

  public static void main(String args[])

  {
    Scanner input = new Scanner(System.in);
    int menu;
    int hourin, minutin, hourout, minutout, timeh, timem, newhourout, newminutout, round;
    double charges;
   
    System.out.println("Type of Vehicle?");
    menu = input.nextInt();
   
    switch(menu) {
        case 1:
        System.out.println("Hour vehicle entered lot (0-23)? ");
        hourin = input.nextInt();
   
        System.out.println("Minute vehicle entered lot (0-59)?");
        minutin = input.nextInt();
   
        System.out.println("Hour vehicle left lot (0-23)? ");
        hourout = input.nextInt();
   
        System.out.println("Minute vehicle left lot (0-60)?");
        minutout = input.nextInt();
        {
        if (minutout < minutin){
        newminutout = minutout + 60;
        newhourout  = hourout - 1;
        timeh = newhourout - hourin;
        timem = newminutout - minutin;
        }
        else{
        timeh = hourout - hourin;
        timem = minutout - minutin;
        }
        }
        round = 60 - timem;
        {
        if (timeh > 0 && timeh < 4){
        charges = 0;
        }
        else if(timeh > 3)
        charges = ((timeh - 3)*1.5);
        }
        
        System.out.println("PARKING LOT CHARGE");
        System.out.println("");
        System.out.println("Type of vehicle: Car or Bus or Truck"+ menu) ;
        System.out.println("TIME-IN                     "+hourin+":" + minutin);
        System.out.println("TIME-OUT                    "+hourout+":"+ minutout);
        System.out.println("                            ----------------------------------");
        System.out.println("PARKING TIME          " + timeh + ":" + timem);
        System.out.println("ROUNDED TOTAL                        :   " + round + "");
        System.out.println("                             ----------------------------------");
        System.out.println("TOTAL CHARGE                            RM " + charges + "");
   
    break;
        case 2:
        System.out.println("Hour vehicle entered lot (0-23)? ");
        hourin = input.nextInt();
   
        System.out.println("Minute vehicle entered lot (0-59)?");
        minutin = input.nextInt();
   
        System.out.println("Hour vehicle left lot (0-23)? ");
        hourout = input.nextInt();
   
        System.out.println("Minute vehicle left lot (0-60)?");
        minutout = input.nextInt();
        {
        if (minutout < minutin){
        newminutout = minutout + 60;
        newhourout  = hourout - 1;
        timeh = newhourout - hourin;
        timem = newminutout - minutin;
        }
        else{
        timeh = hourout - hourin;
        timem = minutout - minutin;
        }
        }
        round = 60 - timem;
        {
        if (timeh > 0 && timeh < 3){
        charges = timeh*1;
        }
        else if(timeh > 2)
        charges = ((timeh - 2)*2.3);
        }
        
        System.out.println("PARKING LOT CHARGE");
        System.out.println("");
        System.out.println("Type of vehicle: Car or Bus or Truck"+ menu) ;
        System.out.println("TIME-IN                     "+hourin+":" + minutin);
        System.out.println("TIME-OUT                    "+hourout+":"+ minutout);
        System.out.println("                            ----------------------------------");
        System.out.println("PARKING TIME          " + timeh + ":" + timem);
        System.out.println("ROUNDED TOTAL                        :   " + round + "");
        System.out.println("                             ----------------------------------");
        System.out.println("TOTAL CHARGE                            RM " + charges + "");

    break;
        case 3:
        System.out.println("Hour vehicle entered lot (0-23)? ");
        hourin = input.nextInt();
   
        System.out.println("Minute vehicle entered lot (0-59)?");
        minutin = input.nextInt();
   
        System.out.println("Hour vehicle left lot (0-23)? ");
        hourout = input.nextInt();
   
        System.out.println("Minute vehicle left lot (0-60)?");
        minutout = input.nextInt();
        {
        if (minutout < minutin){
        newminutout = minutout + 60;
        newhourout  = hourout - 1;
        timeh = newhourout - hourin;
        timem = newminutout - minutin;
        }
        else{
        timeh = hourout - hourin;
        timem = minutout - minutin;
        }
        }
        round = 60 - timem;
        {
        if (timeh > 0 && timeh < 2){
        charges = timeh*2;
        }
        else if(timeh > 2)
        charges = ((timeh - 3)*3.7);
        }
        
        System.out.println("PARKING LOT CHARGE");
        System.out.println("");
        System.out.println("Type of vehicle: Car or Bus or Truck"+ menu) ;
        System.out.println("TIME-IN                     "+hourin+":" + minutin);
        System.out.println("TIME-OUT                    "+hourout+":"+ minutout);
        System.out.println("                            ----------------------------------");
        System.out.println("PARKING TIME          " + timeh + ":" + timem);
        System.out.println("ROUNDED TOTAL                        :   " + round + "");
        System.out.println("                             ----------------------------------");
        System.out.println("TOTAL CHARGE                            RM " + charges + "");

    break;
    default:
    System.out.println("Invalid Entry!");   
    }
    }
}

我compile和run不到。
请各位高手帮帮忙和指点指点
谢谢


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

3#
发表于 2010-2-23 12:26 PM |只看该作者

回复 #2 diving 的帖子

erro code 没 放出来, 你的code 那么长, 懒惰一排排看


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

4#
发表于 2010-2-23 12:41 PM |只看该作者
还有我发现你的code 法有个很严重的问题。

  1.      Scanner input = new Scanner(System.in);
  2.     int menu;
  3.     int hourin, minutin, hourout, minutout, timeh, timem, newhourout, newminutout, round;
  4.     double charges;

  5.      System.out.println("Type of Vehicle?");
  6.      menu = input.nextInt();
  7.      System.out.println("Hour vehicle entered lot (0-23)? ");
  8.      hourin = input.nextInt();
  9.    
  10.      System.out.println("Minute vehicle entered lot (0-59)?");
  11.      minutin = input.nextInt();
  12.    
  13.         System.out.println("Hour vehicle left lot (0-23)? ");
  14.         hourout = input.nextInt();
  15.    
  16.         System.out.println("Minute vehicle left lot (0-60)?");
  17.         minutout = input.nextInt();

  18.      switch(menu){
  19.      case 1 :
  20.       // code blah blah
  21.      break;
  22.       
  23.       }


  24.      System.out.println("PARKING LOT CHARGE");
  25.         System.out.println("");
  26.         System.out.println("Type of vehicle: Car or Bus or Truck"+ menu) ;
  27.         System.out.println("TIME-IN                     "+hourin+":" + minutin);
  28.         System.out.println("TIME-OUT                    "+hourout+":"+ minutout);
  29.         System.out.println("                            ----------------------------------");
  30.         System.out.println("PARKING TIME          " + timeh + ":" + timem);
  31.         System.out.println("ROUNDED TOTAL                        :   " + round + "");
  32.         System.out.println("                             ----------------------------------");
  33.         System.out.println("TOTAL CHARGE                            RM " + charges + "");
复制代码

没必要一直做一样的东西 , 只会弄你很乱。

另外点就是


System.out.println("Minute vehicle left lot (0-60)?");
        minutout = input.nextInt();
       {        if (minutout < minutin){
        newminutout = minutout + 60;
        newhourout  = hourout - 1;
        timeh = newhourout - hourin;
        timem = newminutout - minutin;
        }


请问哪个 红色 hightlight 的 brace 是哪里来的??

[ 本帖最后由 宅男-兜着走 于 2010-2-23 02:03 PM 编辑 ]


回复

使用道具 举报

0

主题

0

好友

20

积分

初级会员

Rank: 1

5#
发表于 2010-2-23 08:12 PM |只看该作者

回复 #3 宅男-兜着走 的帖子

error 如下
variable charges might not have been initialized
但我已经declare variable了


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

6#
发表于 2010-2-23 08:29 PM |只看该作者

回复 #5 diving 的帖子

如果declare 了 , 那么你给他个 "值"吧.

int hourIn = 0, hourOut = 0; .... etc  

然后再看看什么 error。

{} << 没开关正确。


回复

使用道具 举报

0

主题

0

好友

20

积分

初级会员

Rank: 1

7#
发表于 2010-2-23 09:06 PM |只看该作者

回复 #6 宅男-兜着走 的帖子

谢谢,可以run了
但可以告诉我为什么一定要give value?
还有我可以menu choice 用 character吗?
可以的话要如何, int menu 换去 char menu?
对不起问了这么多,
因为我才学了一个月的java,所以有很多的不明。
再一次谢谢


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

8#
发表于 2010-2-23 10:08 PM |只看该作者

回复 #7 diving 的帖子

除非你是 if else , while , for ,  外面给他 input 就不同说。 最好的方法就是 初始化给他个值。 没办法。 这个就是 JAVA 累人的地方。

直接string 不就好了咯 , 才三个 Menu 不必用到 switch 吧。
String menu = “”; // 这样就好了。
if(menu.length() > 1){
System.out.println("error menu input");
}

if(menu.equals("C")){
// 逻辑
}

然后如果 输入大过 1 就从来。

直接if else 判断好了。 简单多多。



如果你们老师肯的话, 就用 method(方法)来完成, 其实更好。em0011
如果还没教到就算了。

[ 本帖最后由 宅男-兜着走 于 2010-2-23 10:09 PM 编辑 ]


回复

使用道具 举报

0

主题

0

好友

20

积分

初级会员

Rank: 1

9#
发表于 2010-2-23 10:20 PM |只看该作者

回复 #8 宅男-兜着走 的帖子

谢谢
用 switch 是因为从 c 想到的


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-12-26 02:08 PM , Processed in 0.110819 second(s), 28 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部