Mảng trong java - Cách đưa class vào mảng
Chào mọi người!!
Hiện bài tập em yêu cầu thế này
a)create a class: teacher: code(string), name(string),age(int),address(string)
b)write code(main method) to enter 2 teachers from keyboard and save it to array-arrayList
c)write a method to display all teachers from array
d)write a method to display teachers from array having age are greater than 25 year old
Em đã làm được 3 câu, còn câu b em cũng có y tưởng nhưng nó báo lỗi, nên chạy lên đây hỏi.
package bai2;
import java.util.Scanner;
class Teacher
{
public String code,name,address;
public int age;
}
public class Bai2 {
static Teacher inp()
{
Teacher a= new Teacher();
Scanner nhap= new Scanner(System.in);
System.out.print("Teacher's name: ");
a.name=nhap.nextLine();
System.out.print("Teacher's code: ");
a.code=nhap.nextLine();
System.out.print("Teacher's address: ");
a.address=nhap.nextLine();
System.out.print("Teacher's age: ");
a.age=nhap.nextInt();
return a;
}
static void infTeacher(Teacher a)
{
System.out.println("Teacher's name "+a.name);
System.out.println("Teacher's code "+a.code);
System.out.println("Teacher's address "+a.address);
System.out.println("Teacher's age "+a.age);
}
static void compare(Teacher a)
{
if(a.age>25) {
infTeacher(a);
}
}
public static void main(String[] args) {
int n;
Scanner num= new Scanner(System.in);
Teacher a=new Teacher();
a = inp();
System.out.println("===================================");
Teacher b=new Teacher();
b = inp();
System.out.println("===================================");
infTeacher(a);
System.out.println("===================================");
infTeacher(b);
System.out.println("===================================");
System.out.println("Teacher older than 25");
compare(a);
System.out.println("===================================");
compare(b);
System.out.println("===================================");
}
}
Còn phần mảng thì ý tưởng em là như thế này
int n;
Scanner num= new Scanner(System.in);
System.out.println("Number of teacher");
n=num.nextInt();
int[] a;
a = new int[n];
int i=0;
For(i;i<=n;i++)
{
Teacher a[i]=new Teacher();
a[i]=inp();
System.out.println("===================================");
}
For(i;i<=n;i++){
infTeacher(a[i]);
System.out.println("===================================");
}
For(i;i<=n;i++){
compare(a[i]);
System.out.println("===================================");
}
nhưng nó lại báo lỗi các bác ạ
Em không hiểu lắm, nó sai vì lý do gì ạ??
Và nếu được các bác có thể định hướng cho em câu b) làm thế nào là đúng không ạ
Vì em mới chuyển qua học java nên còn hơi bỡ ngỡ
Bác nào rảnh thì giúp e với, em xin cảm ơn
Với mấy lỗi liên quan đến syntax thì bạn thử tự xem thông báo lỗi từ ide là gì, kết hợp với xem lại sách xem giải quyết được không đã rồi hãy hỏi, nhìn sơ thì bạn sai cú pháp cơ bản rất nghiêm trọng
Khổ là em tự học bác ơi, học qua ví dụ của họ với lại mấy cái khóa free trên mạng ấy, thế đây là lỗi syntax hả bác. để em gooogle ra đọc cái đã
bạn đã học vòng lặp for chưa?
Nó y như code m mà, m có thói quen khai báo i ở ngoài á
Còn cái array a là gì thế?
Để i bên ngoài thì i sẽ bị gán gán trị khi vòng lặp for đầu tiên thực hiện (i++) mấy thằng for sau nó không hoạt động
Sửa lại đưa int vào for vẫn báo lỗi :’(
Còn array a thì ý tưởng của mình là nhập số lượng có trong mảng
Để có giới hạn mà chạy for
Và đến cái a[i] nào thì gọi class a[i] đó ra
Correct
Incorrect
Em vẫn không hiểu cái hàm arrray nó khai báo với lại hoạt động thế nào, java khác C/C++ nhiều quá @@
Để em vật lộn với cái đống lỗi này đã
Và cái chương trình đầu tiên em đưa có dạng
Teacher a=new Teacher();
mà sao nó vẫn chạy anh nhỉY đâu mà y bạn, của bạn viết là For còn đúng phải là for. Quan trọng viết hoa viết thường bạn à
Cảm ơn anh, em đã coi lại phần cấu trúc lệnh cơ bản @@ cái này nó rắc rối quá. Cho phép em hỏi là cái ý tưởng của em có đúng không, còn cái phần cấu trúc em đang tự sửa cho nhớ anh ạ
Đã xong bài hoàn chỉnh cảm ơn mọi người đã giúp đỡ em ạ
package bai2;
import java.util.*;
class Teacher
{
public String code,name,address;
public int age;
}
Mình xin góp ý cách trình bày code của bạn chút nhé:
Bạn mới bắt đầu học code nên xem Tiêu chuẩn coding (Java Coding Standard) và vừa học vừa áp dụng để hình thành thói quen code tốt hơn.
Link bạn có thể tham khảo các tiêu chuẩn coding:
https://gpcoder.com/1775-tieu-chuan-coding-trong-java-coding-standards/
Cái này là coding style của mỗi người, đừng ép uổng nhau.
k phải đâu bạn, trong java thì nó là convention luôn rồi, các nnlt khác thì có thể cho xuống hàng tiếp theo, điển hình là c#
không sao, nhưng đoạn code kia ở hàm main thừa dòng
a[i]=new Teacher();
. Hiện chắc bạn mới học nên vẫn theo hướng thủ tục, sau học sâu về class thì k nên viết kiểeeur c style như thế này nữaCái này tùy vào mỗi người. Tuy nhiên, khi bạn tham gia vào dự án Java thì bạn chắc chắn sẽ phải sử dụng như tôi nói. Nó giống như quy định luôn. Các bạn mới học Java theo tôi nên xem tiêu chuẩn trước, và theo nó, sau này bạn có đi làm hoặc xem code khỏi phải sửa lại.
4rum của mình có tâm quá
Cảm ơn anh @ptgiang56 @hungsteve @qloved @SakaDream @noname00 đã hướng dẫn em trong topic này
Hiện em mới học qua OOP được vài ngày nên chắc chắn sẽ còn nhiều khúc mắc trong tương lai, e mong được mọi người quan tâm giúp đỡ trong thời gian tới
Đặc biệt là lời khuyên của a @ptgiang56 , nếu có thể e sẽ dùng cái chuẩn trình bày đó trong tất cả các ngôn ngữ đã đang và sẽ học trong tương lai nên lời khuyên của a rất hữu ích với e, một lần nữa cảm ơn anh vì điều đó.
Chúc mọi người buổi tối vui vẻ với đống bug của mình
Lúc mới học tôi cũng như bạn, một dù biết coding convention hơi trễ nhưng nó cũng giúp tôi khá nhiều, nên tôi cũng muốn chia sẽ lại với mọi người.
Về tiêu chuẩn tôi trình nói với bạn ở trên, có thể mỗi ngôn ngữ khác nhau, bạn học ngôn ngữ nào nên tìm tài liệu coding convention hay code standard của nó đọc sẽ tốt hơn. Khi bạn nắm được một cái rồi thì những cái khác cũng tương tự, hoặc khác nhau chút ít thôi.
Java coding style của Google:
https://google.github.io/styleguide/javaguide.html
Hồi mình năm nhất thì dường như chỉ có mỗi mình tuân theo convention ngay từ đầu. Vì vậy khi đọc các source code của các bạn sinh viên năm nhất, mình không bắt bẻ lỗi convention. Với lại Khoa cũng không bao giờ xem code của sinh viên. Do đó convention đa số bỏ qua.
Theo quan sát từ các bạn cùng khoá khi bắt đầu xem convention thường có 2 ý kiến: (1) không coi trọng, vì chỉ là sửa tên biến, đặt space, indent cho phù hợp, phân phối code lại, kết quả code dài hơn mà chức năng vẫn y nguyên. (2) quen với thói quen cũ, khó bỏ dù biết convention tốt, học convention xong đến lúc code vẫn code cách cũ.
Tuy nhiên, bạn nên học luôn convention (coding style) ngay từ khi bắt đầu học cú pháp của ngôn ngữ. Điều này đem các lợi ích, mình không nói lợi ích cho team mà lợi ích bản thân:
Vẫn có thể đọc code sau một thời gian mà không chửi thầm: sao mình ngu thế, code bẩn, không biết mình viết cái gì nhỉ,…
Lợi khi làm bài tập lớn, khi mỗi file lên đến 1000 dòng.
Bạn bè đọc code của bạn cảm thấy thoải mái.
Đọc source code trên github và các open source dễ dàng. Vì code github và code của bạn đều tuân theo đúng coding style, nên xem code của open source cảm giác như chính mình viết. (*)
Đọc được code (*) là ưu điểm rất lớn. Bạn hiểu càng nhiều bộ code của các framework, thư viện nổi tiếng. Trình độ của bạn càng cao. Thay vì bạn phải làm, tự rút kinh nghiệm cải tiến qua từng năm. Giờ bạn chỉ cần đọc code của 1 expert, thì code của bạn viết ra sau này cũng gần expert.