为什么我不能使用 main 中的静态方法?
Why i cant use static method from my main?
我正在做一个日记程序
- 在日记中 class 我制作了一个名为 "addStudent" 的方法
但是我不明白为什么它在我的主目录中是不可见的?
编辑 我添加了代码,抱歉只有一个块而不是 3 个但是 lombok 导入导致格式问题
EDIT2 我删除了剩余的问题
public class Main {
public static void main(String[] args) {
}
}
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@AllArgsConstructor
@Data
public class Diary {
List<Student> listOfStudents = new ArrayList<>();
public static void addStudent(Student... students){
Student student = new Student(Student.askAboutGrades(), Student.askAboutIndexNumber(), Student.askAboutName(), Student.askAboutSurname());
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
@AllArgsConstructor
@Data
public class Student {
List<Double> grades = new ArrayList<>();
String indexNumber;
String name;
String surname;
public static String askAboutName() {
System.out.println("Type the name");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
while
(!(name.matches("[a-zA-Z]+"))) {
System.out.println("incorrect name, try again");
name = scanner.nextLine();
}
System.out.println("Name seems good");
return name;
}
public static String askAboutSurname() {
System.out.println("Type the surname");
Scanner scanner = new Scanner(System.in);
String surname = scanner.nextLine();
while (!(surname.matches("[a-zA-Z]+"))) {
System.out.println("incorrect surname, try again");
surname = scanner.nextLine();
}
System.out.println("surname seems good");
return surname;
}
public static String askAboutIndexNumber() {
System.out.println("Type the index number (6 digits!)");
Scanner scanner = new Scanner(System.in);
String indexNumber = scanner.nextLine();
while (!indexNumber.matches("\d{6}")) {
System.out.println("incorrect index number, try again");
indexNumber = scanner.nextLine();
}
System.out.println("index seems good");
return indexNumber;
}
public static List<Double> askAboutGrades() {
System.out.println("Type the grades,separated by comma (\",\")");//todo check if works and set limiter from 2 to 5.5
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
String[] arrayOfGrades = input.split(",");
List<String> listOfGrades = new ArrayList<>(Arrays.asList(arrayOfGrades));
List<Double> listOfGradesDouble = new ArrayList<>();
String temp;
for (int i = 0; i < listOfGrades.size(); i++) {
temp = listOfGrades.get(i);
listOfGradesDouble.add(Double.parseDouble(temp));
}
return listOfGradesDouble;
}
}
Github:
https://github.com/Karol011/SDA/tree/master/zadania/src/main/java/Kolekcje/ListyKolekcje/Diary
哇哦。我会尽力:
1. 你怎么称呼它?应该是
Diary.addStudent();
嗯嗯。您打算如何从静态方法访问非静态列表?为什么它是静态的?
听起来很奇怪。
弄清楚什么是静态的以及何时使用它。在大多数情况下,您不需要它。此外,我会删除所有 lombok,并尝试使用纯 java 来解决问题。恕我直言。
Powodzenia)
我正在做一个日记程序
- 在日记中 class 我制作了一个名为 "addStudent" 的方法 但是我不明白为什么它在我的主目录中是不可见的?
编辑 我添加了代码,抱歉只有一个块而不是 3 个但是 lombok 导入导致格式问题
EDIT2 我删除了剩余的问题
public class Main {
public static void main(String[] args) {
}
}
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@AllArgsConstructor
@Data
public class Diary {
List<Student> listOfStudents = new ArrayList<>();
public static void addStudent(Student... students){
Student student = new Student(Student.askAboutGrades(), Student.askAboutIndexNumber(), Student.askAboutName(), Student.askAboutSurname());
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
@AllArgsConstructor
@Data
public class Student {
List<Double> grades = new ArrayList<>();
String indexNumber;
String name;
String surname;
public static String askAboutName() {
System.out.println("Type the name");
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
while
(!(name.matches("[a-zA-Z]+"))) {
System.out.println("incorrect name, try again");
name = scanner.nextLine();
}
System.out.println("Name seems good");
return name;
}
public static String askAboutSurname() {
System.out.println("Type the surname");
Scanner scanner = new Scanner(System.in);
String surname = scanner.nextLine();
while (!(surname.matches("[a-zA-Z]+"))) {
System.out.println("incorrect surname, try again");
surname = scanner.nextLine();
}
System.out.println("surname seems good");
return surname;
}
public static String askAboutIndexNumber() {
System.out.println("Type the index number (6 digits!)");
Scanner scanner = new Scanner(System.in);
String indexNumber = scanner.nextLine();
while (!indexNumber.matches("\d{6}")) {
System.out.println("incorrect index number, try again");
indexNumber = scanner.nextLine();
}
System.out.println("index seems good");
return indexNumber;
}
public static List<Double> askAboutGrades() {
System.out.println("Type the grades,separated by comma (\",\")");//todo check if works and set limiter from 2 to 5.5
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
String[] arrayOfGrades = input.split(",");
List<String> listOfGrades = new ArrayList<>(Arrays.asList(arrayOfGrades));
List<Double> listOfGradesDouble = new ArrayList<>();
String temp;
for (int i = 0; i < listOfGrades.size(); i++) {
temp = listOfGrades.get(i);
listOfGradesDouble.add(Double.parseDouble(temp));
}
return listOfGradesDouble;
}
}
Github: https://github.com/Karol011/SDA/tree/master/zadania/src/main/java/Kolekcje/ListyKolekcje/Diary
哇哦。我会尽力: 1. 你怎么称呼它?应该是
Diary.addStudent();
嗯嗯。您打算如何从静态方法访问非静态列表?为什么它是静态的?
听起来很奇怪。
弄清楚什么是静态的以及何时使用它。在大多数情况下,您不需要它。此外,我会删除所有 lombok,并尝试使用纯 java 来解决问题。恕我直言。
Powodzenia)