2013-09-23 26 views
0

这是我的整个代码 在命令提示符处获取以下错误。请帮助我解决它,这里是一个初学者。错误:找不到符号..在我的Java程序中

"Student.java:36: error: cannot find symbol 
         s[i].Student(); 
          ^
    symbol: method Student() 
    location: class Student 
1 error" 

    import java.util.*; 

public class Student 
{ 
    int roll; 
    String name=new String(); 


    Student() 
    { 
     Scanner sc=new Scanner(System.in); 
     System.out.println("Enter Name"); 
     name=sc.next(); 
     System.out.println("Enter Roll No"); 
     roll=sc.nextInt(); 
    } 

    public String toString() 
    { 
     return "Name:"+name+" "+"Roll Number:"+roll ; 
    } 
} 

class Main 
{ 
    public static void main(String args[]) 
    { 
     int n,i; 
     Scanner sc=new Scanner(System.in); 
     System.out.println("Enter the number of students"); 
     n=sc.nextInt(); 
     Student s[]=new Student[n]; 
     for(i=0;i<n;i++) 
     { 
      s[i]=new Student(); 
      s[i].Student(); 
     } 
     for(i=0;i<n;i++) 
     { 
      System.out.println(s[i]); 
     } 
    } 
} 
+2

你想要做什么 - 's [i] .Student();'? –

+0

调用's [i] .Student();'时,你会做什么? 如果你想调用构造函数,那么你不需要它,因为你已经在s [i] = new Student()中调用了它;' – Scadge

+0

'Student()'是一个构造函数,而不是你的函数可以这样打电话。 – jonhopkins

回答

1

在管线35您正在正确地实例化一类的构造,

s[i]=new Student(); 

在线路36上你错误地(并且没有任何明显的逻辑原因是什么?)调用的方法等的构造函数。删除这一行:

s[i].Student(); 
+0

感谢很多家伙工作:) –

+0

@PranavGhate - 如果这为你工作,将其标记为接受的答案。 – Alex

0

你只是不需要该行:当你写new Student() s[i].Student();

Student()构造函数被调用。

Read this about constructors in Java.

+0

如果我想让构造函数超载来完成扫描像上面这样的工作,该怎么办?将删除s [i] .student();工作? –

+0

它的工作!谢谢..也清除了我的困惑:) –

0

而且你不需要一类主,把你的主要方法,并把它类学生中,删除此行:

S [I] .Student();

而程序运行正常

0

我想你调用像s[i].Student()构造这是不正确。

Java将假定Student()是一种方法而不是构造函数。由于你的类中没有方法正常的Student()方法,所以肯定不会找到它。

记住,构造函数不只是一个普通的方法。这是一个实例化对象的特殊方法。