当前位置: 代码迷 >> Java相关 >> 帮忙看看2个程序错在哪?
  详细解决方案

帮忙看看2个程序错在哪?

热度:142   发布时间:2010-04-11 16:39:39.0
帮忙看看2个程序错在哪?
1.基本的类使用
class Person{
    private String name;
    private Integer age;
    public String getname()   
{          return name;            }
    public void setname(String nn)
{          name=nn;        }
    public Integer getage()   
{            return age;            }
    public void setage(Integer i)   
{            age=i;    }
             }
public class TestPerson
    {   
    public static void main(String args[]){
        Person d=new Person();
        d.setname("Murphysom");
       d.setage(22);
        System.out.println("本人姓名:"+d.getname());
        System.out.println("本人年龄:"+d.getage());
   }
提示红字部分,不能用Int 类型。

2.计程车费用计算:
import java.util.*;
class Taxi{
    float len;   //公里
    float start_price;   //起价
    float start_len;   //起始里程
    float per_price;   //每公里价格
    float price;   //总价
    }
    public set_price(){
        int curr_hour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
        if(curr_hour=7&&curr_hour<=23)        {
            start_price=10;
            per_price=1.2f;     }
            else{
                start_price=11;
                per_perice=1.4f;
            }    }
        public void calc(float len){
        this.len=len;
        set_price();
        if(len<=start_len)price=start_price;
        else
        price=start_price+per_price*(len-start_len);
        price=Math.round(price);
        }
        public void show(){
        System.out.println("起价:"+start_price);
        System.out.println("起始公里:"+start_len);
        System.out.println("每公里价格"+per_price);
        System.out.println("里程"+len);
        System.out.println("==============================");
        System.out.println("总价:"+price);      }
    public class calctaxi{
                public static void main(String args[]){
                Taxi ta1=new Taxi();
                int len=0;
                try
                {
                    len=Integer.parseInt(args[0]);
                    }
                    catch(NumberFormatException ee){
                        System.out.println("请输入合法公里数!");
                        return;
                        }
                        ta1.calc(len);
                        ta1.show();
                }
            }
我实在看不出来了



[ 本帖最后由 yuanxl33 于 2010-4-11 16:41 编辑 ]
搜索更多相关的解决方案: name  void  private  public  return  

----------------解决方案--------------------------------------------------------
我也是新手。不过你的那个第一个程序 少了一个 }
----------------解决方案--------------------------------------------------------
我是初学者,进来看看
class Person{
    private String name;
    private Integer age;
    public String getname()   
{          return name;            }
    public void setname(String nn)
{          name=nn;        }
    public Integer getage()   
{            return age;            }
    public void setage(Integer i)   
{            age=i;    }
             }
public class TestPerson
    {   
    public static void main(String args[]){
        Person d=new Person();
        d.setname("Murphysom");
       d.setage(22);
        System.out.println("本人姓名:"+d.getname());
        System.out.println("本人年龄:"+d.getage());
   }
}
这个我不知道你那个错误“提示红字部分,不能用Int 类型”怎么回事,我在最后加了个过括号,程序能运行出来了。
第二个,我有些代码卡看不懂,没学过,但是“if(curr_hour=7&&curr_hour<=23)”这句话很费解,既要等于7又要小于23???,所以会提示运算符不能用于int,boolean,应该是 if(curr_hour》=7&&curr_hour<=23)”吧。“per_perice=1.4f;”多了个“e”,打错了吧,
其他的
class Taxi{
    float len;   //公里
    float start_price;   //起价
    float start_len;   //起始里程
    float per_price;   //每公里价格
    float price;   //总价
    }我把最后的括号去掉了,在  System.out.println("总价:"+price);      }}后又加了一个,
不知道这样子该对不对,我编译能通过,但是运行出错了。


----------------解决方案--------------------------------------------------------
补充,第二个改好后可以运行的,呵呵。运行的时候同学说不能输java calctaxi,要有个什么参数,所以随便输了数字java calctaxi 11,运行成功,(又学了一招)
----------------解决方案--------------------------------------------------------
第一题主函数少了一个}:
1.基本的类使用
class Person{
    private String name;
    private Integer age;
    public String getname()   
{          return name;            }
    public void setname(String nn)
{          name=nn;        }
    public Integer getage()   
{            return age;            }
    public void setage(Integer i)   
{            age=i;    }
             }
public class TestPerson
    {   
    public static void main(String args[]){
        Person d=new Person();
        d.setname("Murphysom");
       d.setage(22);
        System.out.println("本人姓名:"+d.getname());
        System.out.println("本人年龄:"+d.getage());
   }
}
第二题:
1、public set_price()这个方法错了。没有返回类型和void是构造函数的写法,因此,这个普通方法应该加void:
    public void set_price(){}
2、if(curr_hour=7&&curr_hour<=23) 这个也错了。这个是if条件句,它所判断的是布尔型值:true和flase。不能出现赋
    值语句,因此,要改为:if(curr_hour==7&&curr_hour<=23)
3、 public set_price(){
        int curr_hour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
        if(curr_hour=7&&curr_hour<=23)        {
            start_price=10;
            per_price=1.2f;     }
            else{
                start_price=11;
                per_perice=1.4f;
            }    }
    这里面per_perice=1.4f变量名写错了,要改为:per_price=1.4f
4、len=Integer.parseInt(args[0]);这个也有问题:
第一个方法:    args是主函数自定义的一个数组:
                在cmd命令里运行时,要输入数组的值,要不然args[0]为空,
第二个方法:把代码改写成如下代码:
        public class calctaxi{
            public static void main(String args[]){
                Scanner input=new Scanner(System.in);//要加入的地方
            Taxi ta1=new Taxi();
            int len=0;
            try
            {
                System.out.println("请输入公里数!");
                len=Integer.parseInt(input.next());//要改写的地方
                }
                catch(NumberFormatException ee){
                    System.out.println("请输入合法公里数!");
                    return;
                    }
                    ta1.calc(len);
                    ta1.show();
            }
        
        }


----------------解决方案--------------------------------------------------------
import java.util.*;
class Taxi
{
    float len;   //公里
    float start_price;   //起价
    float start_len;   //起始里程
    float per_price;   //每公里价格
    float price;   //总价
   
    public void set_price() {
        int curr_hour=Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
        if(curr_hour>=7&&curr_hour<=23)    {
        start_price=10;
        per_price=1.2f;              }
            else{    start_price=11;
                per_price=1.4f;
                }      }
        public void calc(float len)            {
        this.len=len;
        set_price();
        if(len<=start_len)price=start_price;
        else
        price=start_price+per_price*(len-start_len);
        price=Math.round(price);
        }
        public void show(){
        System.out.println("起价:"+start_price);
        System.out.println("起始公里:"+start_len);
        System.out.println("每公里价格"+per_price);
        System.out.println("里程"+len);
        System.out.println("==============================");
        System.out.println("总价:"+price);      }
}

    public class calctaxi{
                public static void main(String args[]){
                Taxi ta1=new Taxi();
                int len=0;
                try
                {
                    len=Integer.parseInt(args[0]);
                    }
                    catch(NumberFormatException ee){
                        System.out.println("请输入合法公里数!");
                        return;
                        }
                        ta1.calc(len);
                        ta1.show();
                }
            }
第二题我找到了,结合楼上各位的提示
float price;   //总价
后面的括号应该放在public class calctaxi{
之前。另外 运行calctaxi的时候 得顺手输入 里程数
比如 java calctaxi 3
感谢大家的帮忙
   
第一题的括号是我漏了,源代码里有的
但是在JDK1.42上就是提示错误。跑来同学这边装了1.50的就可以。晕倒


[ 本帖最后由 yuanxl33 于 2010-4-12 00:52 编辑 ]
----------------解决方案--------------------------------------------------------
但是算法还是有问题
前3公里应该按起步价格算
所以还不算成功
----------------解决方案--------------------------------------------------------
搞定了,结贴
----------------解决方案--------------------------------------------------------
。。。。
----------------解决方案--------------------------------------------------------
呵呵呵,建议楼主以后写程序规范点!!!这样会给你减少很多麻烦!!!
----------------解决方案--------------------------------------------------------
  相关解决方案