黑马程序员技术交流社区

标题: 在构造s1 s2时不成功,有什么办法解决呀?<已解决> [打印本页]

作者: 付信榕    时间: 2012-5-22 15:22
标题: 在构造s1 s2时不成功,有什么办法解决呀?<已解决>
本帖最后由 付信榕 于 2012-6-13 10:31 编辑

class Score
{
        private int x,y;
        public void Score (int x,int y )
        {
        
                this.x=x;
                this.y=y;
        
        }
        public int mult()
                {
                                return x*y;
                }
        public static void main(String[] args)
        {
                Score s1=new Score(3,3);
                Score s2=new Score(2,3);
                System.out.println(s1.mult());
                System.out.println(s2.mult());
        }
}
在构造s1 s2时不成功,有什么办法解决呀?
dos命令显示如下:
I:\EditPlus>javac Score.java
Score.java:17: 错误: 无法将类 Score中的构造器 Score应用到给定类型;
                Score s1=new Score(3,3);
                         ^
  需要: 没有参数
  找到: int,int
  原因: 实际参数列表和形式参数列表长度不同
Score.java:18: 错误: 无法将类 Score中的构造器 Score应用到给定类型;
                Score s2=new Score(2,3);
                         ^
  需要: 没有参数
  找到: int,int
  原因: 实际参数列表和形式参数列表长度不同
2 个错误
作者: 蒋映辉    时间: 2012-5-22 15:26
public void Score (int x,int y )
构造函数   不要类型申明
public Score(int x,int y){}
你的那种写法  不是构造函数 ,系统自动添加了无参构造函数  于是乎你的那个建立对象的就错了
class Score
{
        private int x,y;
        public  Score (int x,int y )
        {
        
                this.x=x;
                this.y=y;
        
        }
        public int mult()
                {
                                return x*y;
                }
        public static void main(String[] args)
        {
                Score s1=new Score(3,3);
                Score s2=new Score(2,3);
                System.out.println(s1.mult());
                System.out.println(s2.mult());
        }
}

作者: 黑马-李勇    时间: 2012-5-22 15:27
把主函数单独拿出来,别放在Score 里试试
作者: 李文富    时间: 2012-5-22 15:39
本帖最后由 李文富 于 2012-5-22 15:41 编辑

package cn.lwf.test;
class Score
{
         private int x,y;
         public Score (int x,int y )
         {
         
                 this.x=x;
                 this.y=y;
         
         }
         public int mult()
                 {
                                 return x*y;
                 }
         public static void main(String[] args)
         {
                 Score s1=new Score(3,3);
                 Score s2=new Score(2,3);
                 System.out.println(s1.mult());
                 System.out.println(s2.mult());
         }
}
将此处出现的void 删除,构造器是没有返回值的


作者: 龚正军    时间: 2012-5-22 16:16
本帖最后由 龚正军 于 2012-5-22 16:20 编辑

class Score
{
        private int x,y;
        public void Score (int x,int y )---------------------------------------构造函数是不能有返回值的,void代表的是空返回值,是默认有retrun的,也就是有“空”的返回值的,所以你的构造函数不可能成功,完全误!!     
   {                                                                                             再说点:关于构造函数前的public修饰符也不需要写,(写没错,但是没有返回值public修饰你觉得有意义么??)构造函数的范围修饰是跟随class前的限定而限定的,如果public clss Score
                                                                                                  那么Score(){}构造函数也必定是public.---------------------------所以构造函数前你不需要去写public。
      最后:你去掉该句public void这两个修饰,你的代码就正确了!(你不去掉public也不会错,但最好去掉)
                this.x=x;
                this.y=y;
        
        }
        public int mult()
                {
                                return x*y;
                }
        public static void main(String[] args)
        {
                Score s1=new Score(3,3);
                Score s2=new Score(2,3);
                System.out.println(s1.mult());
                System.out.println(s2.mult());
        }
}

作者: 余宏    时间: 2012-5-22 16:17
package com.itcast.test;

class Score
{
         private int x,y;
         public Score (int x,int y )//构造函数不需要返回值类型
         {
         
                this.x=x;
                 this.y=y;
         
        }
         public int mult()
                 {
                                 return x*y;
                 }
         public static void main(String[] args)
        {
                 Score s1=new Score(3,3);
                 Score s2=new Score(2,3);
                 System.out.println(s1.mult());
                 System.out.println(s2.mult());
         }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2