黑马程序员技术交流社区

标题: 为什么构造了函数还提示未定义构造函数?(问题已解决) [打印本页]

作者: 徐小骥    时间: 2012-8-4 00:05
标题: 为什么构造了函数还提示未定义构造函数?(问题已解决)
本帖最后由 徐小骥 于 2012-8-4 16:54 编辑

        
public class test{
class Student{
        private String name;
        private int age;
        private int achievement;
      
public Student (String name,int age,int achievement){
                this.name=name;
                this.age=age;
                this.achievement=achievement;
        }
         ...
}
public static void main(String[] args){
        new Student("张三","2","87");//这代码提示:The constructor test10.Student(String, String, String) is undefined
         ...
         ...
}
}
我构造的函数是Student(String, int, int) ,插入的数据是 String, int, int ,编译的时候提示找不到 构造函数Student(String, String, String)
这是怎么回事?我输入的是int类型,没输入String啊!!




作者: 王志明    时间: 2012-8-4 00:15
class Student{
        private String name;
        private int age;
        private int achievement;
      
public Student (String name,int age,int achievement){
                this.name=name;
                this.age=age;
                this.achievement=achievement;
        }
}
public static void main(String[] args){
        // 你传入的参数的类型和构造器参数类型不一致
        new Student("张三","2","87");//这代码提示:The constructor test10.Student(String, String, String) is undefined
}


作者: 余明辉    时间: 2012-8-4 00:17
本帖最后由 余明辉 于 2012-8-4 00:22 编辑

new Student("张三","2","87"); 这里错了
应该是 new Student("张三", 2, 87);  你加了双引号,就代表传递进去的是String,不是int了

通过编译时的错误提示 :编译的时候提示找不到 构造函数Student(String, String, String)
就说明编译器找不到Student(String, String, String)这样的构造方法,因为你传了3个字符串进去,它就找3个参数都是String的构造方法,但是你没有定义,所以编译就错了

还有这句错误提示:The constructor test10.Student(String, String, String) is undefined  
constructor 构造方法的意思,
undefined 没找到
翻译过来就是 构造方法
Student(String, String, String)没找到
这个时候你就要想了,我定义了啊,为什么它提示找这样的构造方法呢,然后你再回头去看下你传的参数,就能发现错误了

一定要学会看错误提示,慢慢学会看它,错误提示是我们的朋友,不要怕它,因为它能帮我们及时发现错误出在哪里,省去好多我们查错误的时间

希望可以帮你到。
作者: 林康春    时间: 2012-8-4 00:17
public static void main(String[] args){
        new Student("张三","2","87");//这代码提示:The constructor test10.Student(String, String, String) is undefined
         ...
         ...
}
new Student("张三","2","87");这里的 2 ,87 被你写成字符串拉
那肯定错了嘛

作者: 徐小骥    时间: 2012-8-4 00:18
王志明 发表于 2012-8-4 00:15
class Student{
        private String name;
        private int age;

我找到原因了。。粗心了
作者: 徐小骥    时间: 2012-8-4 00:20
林康春 发表于 2012-8-4 00:17
public static void main(String[] args){
        new Student("张三","2","87");//这代码提示:The const ...

是的,问题已经解决了。。。发帖之后才看清楚。。奋斗到眼花了
作者: 徐小骥    时间: 2012-8-4 00:20
问题已解决
作者: 张扬123    时间: 2012-8-4 00:31
public class test{
class Student{
        private String name;
        private int age;
        private int achievement;
      
public Student (String name,int age,int achievement){ 这里是String ,int, int的参数
                this.name=name;
                this.age=age;
                this.achievement=achievement;
        }
         ...
}
public static void main(String[] args){
        new Student("张三","2","87");但是你传进来的都是String类型的。把2和87上面的双引号去掉。
         ...
         ...
}
}
作者: 徐小骥    时间: 2012-8-4 13:00
张扬123 发表于 2012-8-4 00:31
public class test{
class Student{
        private String name;

谢谢 已经解决了




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