A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 myzhang 于 2014-8-29 09:06 编辑

初学JAVA,刚刚做了一道题:创建一个Book类,里面有三个属性:String类的bookName; int类的bookCount和double类的bookPrice。再创建2个构造方法,一个没有参数值,一个有3个相匹配类型的参数值,并给其赋值并输出到控制台。下面是写的代码不能运行。
package Book;

public class Book {
String bookName;
int bookCount;
double bookPrice;
public Book(){
}
public Book( 程序设计,  80,  10.0){
this.bookName=程序设计;
this.bookCount =80;
this.bookPrice =10.0;
}
public static void main(String[] args) {
Book ha=new Book();
System.out.println("书名:"+ha.bookName+"书的页数:"+ha.bookCount+"书的价格:"+ha.bookPrice);
}
}
求解决方法 谢谢!

点评

构造方法感觉非常重要。  发表于 2014-8-29 09:06
非常赞,谢谢大家的解决方案,受教了。。。  发表于 2014-8-29 09:04

15 个回复

倒序浏览
public Book( 程序设计,  80,  10.0){
this.bookName=程序设计;
this.bookCount =80;
this.bookPrice =10.0;
}你Book() 函数里是三个什么类型参数你要说明啊。
回复 使用道具 举报 1 0
建议你把毕老师javase基础看完。自然就会了
回复 使用道具 举报
带参数的构造方法错了吧
回复 使用道具 举报
看来你对Java语法还不了解,如图,此处是在定义构造器,要定义参数列表Book(String bookName, int bookCount, double bookPrice),然后在调用该构造器时才能进行传参数值

QQ图片20140826134105.jpg (22.81 KB, 下载次数: 20)

QQ图片20140826134105.jpg
回复 使用道具 举报
路过 学习一下
回复 使用道具 举报
你的代码有点混乱,应该是基础不好,另外思路有些凌乱。我把代码改出来了,参考一下吧。
class tes5
{

         public static void main(String[] args)
        {
                 book a = new book("zhangsan",100,18.2);//5、创建对象
               
        }

}

class book
{
        book(String name, int num, double numd)//1、定义构造函数
         {

               

                System.out.println("书名="+name+"页数="+num+"价格="+numd);//2、定义打印语句
         
         }
                 private String name;//3、定义变量
                 private int num;
                 private double numd;

//4、定义变量的设置和获取方法
         public void SetName(String name)
         {
                this.name=name;
         }
         public String GetName()
         {
                return name;
         }

         public void SetNum (int num)
         {
                this.num=num;

         }

         public int GetNum()
         {
                return num;
         }

         public void SetNumd(double numd)
         {
                this.numd=numd;
         }
         public double GetNumd()
         {
                return numd;
         }
}
回复 使用道具 举报
在你原来的基础上改了一下,这样你应该会很容易看懂的
public class Book {

String bookName;
int bookCount;
double bookPrice;

public Book(){   }

public Book( String bookName, int bookCount,double bookPrice){
this.bookName=bookName;
this.bookCount =bookCount;
this.bookPrice =bookPrice;
}

public static void main(String[] args) {
Book ha=new Book("程序设计",80,10.0);
System.out.println("书名:"+ha.bookName+"书的页数:"+ha.bookCount+"书的价格:"+ha.bookPrice);
}


}
回复 使用道具 举报 1 0
范鹏霄 发表于 2014-8-26 17:24
在你原来的基础上改了一下,这样你应该会很容易看懂的
public class Book {

谢谢啊,我应该好好看看构造函数。。
回复 使用道具 举报
构造方法应该是:
public Book( String name ,  int page,  double price){
  this.bookName=name;
  this.bookCount =page;
  this.bookPrice =price;
}
这里的传入的参数应该都是变量
你没有空参的构造方法吧?main方法就不能空参的创建对象了。
应该
Book ha=new Book("各种书名",20,10.00);
要注意String类型的应该用 " "(英文的双引号)引起来。
回复 使用道具 举报 1 0
bookName是字符串类型,所以传进去的   程序设计  必须是字符串类型,以达到类型匹配。
回复 使用道具 举报
wenjd0000 发表于 2014-8-26 17:41
构造方法应该是:
public Book( String name ,  int page,  double price){
  this.bookName=name;

非常感谢,是构造函数出问题了。。。明白了。。
回复 使用道具 举报
带参数的构造函数的问题
回复 使用道具 举报
hsy 中级黑马 2014-8-27 08:29:31
14#
先打好基础才是王道啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马