2014-09-27 2 views
0
public class Student { 
    int marks; 
    String name; 
    char sex; 
    String email; 
} 
Student[] s = new Student[10]; 

public class StudentDemo { 
    Student s[] = new Student[10];// array Student// 
    Student s1 = new Student();// Student Object// 
    s1.setName("John"); //Eclipse says here there is a mistake an ask to delete John// 
    Student[0]=s1; 
} 

Я создал класс учеников с именем и другими атрибутами. Но теперь я хочу инициализировать каждый элемент массива объектами Student. Правильно ли этот код? Eclipse выбрасывает много красных точек. Помощь.Инициализировать каждый элемент массива объектами-учениками

+0

Вам необходимо написать этот код внутри некоторого метода. Вы не можете писать логику непосредственно внутри класса. –

+0

Используйте s [0] = s1; вместо Student [0] = s1 ;. – KernelPanic

ответ

0
class Student { 
    int marks; 
    String name; 
    char sex; 
    String email; 
    public void setName(String string) 
    { 
     // TODO Auto-generated method stub 

    } 
} 


public class StudentDemo{ 
    public static void main(String [] args) 
    { 
    Student s[] = new Student[10];// array Student// 
    Student s1 = new Student();// Student Object// 
    s1.setName("John"); //Eclipse says here there is a mistake an ask to delete John// 
    s[0]=s1; 
    } 
} 

Попробуйте это.
Проблемы в коде:

  1. Вы написали свою функцию логики за пределами функции. Исправлено в моем с использованием основного метода.
  2. У вас не может быть 2 открытых класса в файле класса. Поэтому я сделал файл студента непубличным.
  3. У вас нет установщика для свойства имени Студента.
0

Ну, вы никогда не определяли метод setName, поэтому я предполагаю, что вы получили ошибку компилятора. Что-то, как это должно работать в классе Student

public String setName(String name){ 
      this.name = name; 
    } 
+0

Я определил все сеттер и геттеры – Jithu

+0

Я думаю, вам следует читать комментарий Марко. – committedandroider

0

использование ссылки массива, созданного вместо типа массива Таким образом, замените Student[0] с s[0]

0

Много неправильно с вашим кодом.

Это должно быть

Student[] s = new Student[10]; 
s[0] = new Student(); 
s[0].setName(); 

Вы должны также написать код внутри метода. Как так:

public void doStuffHere() 
{ 
    // Code goes here. 
} 

Обратите внимание, я использую тот факт, что в положении 0 имеется Student объект, а затем я просто установить имя. Нет реальной причины использовать s1.

0

Несколько вещей:

Прежде всего, ваш первый массив должен быть записан следующим образом:

Student[] s = new Student[10]; 

Во-вторых, вы никогда не определен метод setName(String name) в вашем Student классе. Это будет выглядеть примерно так:

public void setName(String name) 
{ 
    this.name = name; 
} 

Кроме того, вы не можете просто вызвать метод в классе, он должен идти внутри метода, конструктора или инициализации блока.

Например:

public class StudentDemo 
{ 
    Student[] studentArray = initStudentArray(); 

    private Student[] initStudentArray() 
    { 
     Student[] ret = new Student[10]; 
     Student s = new Student(); 
     s.setName("John"); 
     ret[0] = s; 

     ... 

     return ret; 
    } 
} 
0

Это может помочь вам.

class Student { 
    int marks; 
    String name; 
    char sex; 
    String email; 

    void setName(String name){ 
     this.name = name; //this.name represents the current instance non-static variable 
    } 
    public String toString(){ //Overridden Objectclass method for string representation of data 
     return " Student Name: "+name+ 
      "\n Gender: "+sex+ 
      "\n Email: "+email+ 
      "\n Marks: "+marks; 
    } 
} 

public class StudentDemo { 

    public static void main(String[] args){ 
      Student s[] = new Student[10]; 
      s[0] = new Student(); 
      s[0].setName("John"); //similarly u can set values to other attributes of this object 
      System.out.println(s[0]); // same as s[0].toString() its an implicit call 
    } 
} 
Смежные вопросы