#java #database #class #object #verification
Вопрос:
Новый программист, изучающий Java. У меня есть задание, в котором я должен создать своего рода базу данных для хранения информации о потребителях. На данный момент я построил два класса. Сам класс потребителей и второй, отдельный класс с основным методом. Я все еще разрабатываю программу, но столкнулся с чем-то, что, кажется, просто не могу пройти. Моя программа не позволит мне создавать какие — либо объекты класса Consumer. Пожалуйста, помогите, если у кого-нибудь есть шанс.
Код потребительского класса:
import java.lang.Enum;
public class Consumer {
private String name;
private int streetNumber;
private String streetName;
private String city;
private String postalCode;
private int age;
private String gender;
private static int numConsumers;
public Consumer(String name) {
numConsumers ;
this.name = name;
this.streetNumber = 0;
this.streetName = " ";
this.city = " ";
this.postalCode = " ";
this.age = 0;
this.gender = " ";
MaritalStatus maritalStatus = MaritalStatus.SINGLE;
Education education = Education.HIGH_SCHOOL;
}
public enum MaritalStatus {
SINGLE,
COMMON_LAW,
MARRIED,
SEPARATED,
DIVORCED,
WIDOWED
}
public enum Education {
HIGH_SCHOOL,
COLLEGE,
UNIVERSITY,
NONE
}
public void setName(String newName) {
name = newName;
}
public String getName() {
return name;
}
public void setStreetNumber (int n) {
streetNumber = n;
}
public int getStreetNumber() {
return streetNumber;
}
public void setStreetName(String newStreetName) {
streetName = newStreetName;
}
public String getStreetName() {
return streetName;
}
public void setCity(String newCity) {
city = newCity;
}
public String getCity() {
return city;
}
public void setPostalCode(String newPostalCode) {
postalCode = newPostalCode;
}
public String getPostalCode() {
return postalCode;
}
public void setAge (int n) {
age = n;
}
public int getAge() {
return age;
}
public void setGender(String newGender) {
gender = newGender;
}
public String getGender() {
return gender;
}
public String toString() {
System.out.println();
System.out.println("Displaying information for consumer " name);
System.out.println("Address: " streetNumber " " streetName ", " city ", " postalCode);
System.out.println("Age: " age);
System.out.println("Gender: " gender);
System.out.println("Marital status: " MaritalStatus.class);
System.out.println("Education level: " Education.class);
return " ";
}
public static String menu() {
System.out.println("What do you want to do?");
System.out.println("t 1. Enter a new Consumer (password required)");
System.out.println("t 2. Change all information of a Consumer (password required)");
System.out.println("t 3. Display all Consumers similar to a given consumer");
System.out.println("t 4. Display all Consumers with a given age and location");
System.out.println("t 5. Quit");
System.out.println("Please enter your choice > ");
return " ";
}
public static int getNumConsumers() {
return numConsumers;
}
}
и код из моего основного класса/метода
import java.util.Scanner;
public class Capitalism {
private static boolean validatedPassword;
private static String correctPassword = "password";
private static String passwordGuess;
private static int passwordAttempts;
private static int totalPasswordAttempts;
private static int maxNumConsumers;
private static int userMenuChoice;
static int getMaxConsumers() {
Scanner userInput = new Scanner(System.in);
System.out.println("Please enter the maximum number of consumers your company can handle");
do {
if(userInput.hasNextInt()) {
maxNumConsumers = userInput.nextInt();
if(maxNumConsumers <= 0) {
System.out.println("Invalid input. Please enter a positive number");
}
} else {
System.out.println("Invalid input. Please enter a positive number (1, 8, 15, etc).");
userInput.nextLine();
}
} while (maxNumConsumers <= 0);
System.out.println("Your company can handle " maxNumConsumers " consumers.n");
return maxNumConsumers;
}
static void menu() {
System.out.println("What do you want to do?");
System.out.println("t 1. Enter a new Consumer (password required)");
System.out.println("t 2. Change all information of a Consumer (password required)");
System.out.println("t 3. Display all Consumers similar to a given consumer");
System.out.println("t 4. Display all Consumers with a given age and location");
System.out.println("t 5. Quit");
System.out.println("Please enter your choice > ");
}
static int getUserMenuChoice() {
Scanner userInput = new Scanner(System.in);
do {
if(userInput.hasNextInt()) {
userMenuChoice = userInput.nextInt();
if(userMenuChoice <= 0 || userMenuChoice >= 6) {
System.out.println("Invalid input. Please enter a number between 1 and 5.");
}
} else {
System.out.println("Invalid input. User must enter a number with no letters (i.e. 4 instead of four).");
userInput.nextLine();
}
} while (userMenuChoice <= 0 || userMenuChoice >=6);
System.out.println("You have selected option " userMenuChoice ".n");
return userMenuChoice;
}
static void validatePassword() {
while (!validatedPassword amp;amp; passwordAttempts < 3) {
System.out.println("Please enter your password.");
Scanner userInput = new Scanner(System.in);
passwordGuess = userInput.next();
if (passwordGuess.equals(correctPassword)) {
System.out.println("Correct password. Okay to proceed.");
validatedPassword = true;
break;
} else if (passwordAttempts < 2) {
System.out.println("Incorrect password. Max of 3 attempts before returning to main menu.");
passwordAttempts ;
totalPasswordAttempts ;
} else {
passwordAttempts = 0;
totalPasswordAttempts ;
if (totalPasswordAttempts == 12) {
System.out.println("Program has detected suspicious activity and will terminate immediately.");
System.exit(0);
}
System.out.println("Maximum number of attempts reached. Returning to main menu.");
break;
}
}
}
static void validatePassword2() {
while (!validatedPassword amp;amp; passwordAttempts < 3) {
System.out.println("Please enter your password.");
Scanner userInput = new Scanner(System.in);
passwordGuess = userInput.next();
if (passwordGuess.equals(correctPassword)) {
System.out.println("Correct password. Okay to proceed.");
validatedPassword = true;
break;
} else if (passwordAttempts < 2) {
System.out.println("Incorrect password. Max of 3 attempts.");
passwordAttempts ;
totalPasswordAttempts ;
} else {
System.out.println("Program terminated due to safety reasons.");
System.exit(0);
}
}
}
public static void main(String[] args) {
Consumer consumerOne = new Consumer(); // this is the line where the error message comes up
boolean runProgram = true;
System.out.println("Welcome to the consumer information database. A place to store and update consumer information. n");
getMaxConsumers();
while(runProgram) {
menu();
getUserMenuChoice();
switch(userMenuChoice) {
case 1:
validatePassword();
System.out.println("Then we continue the rest of this nonesense");
break;
case 2:
validatePassword2();
break;
case 3:
case 4:
case 5:
runProgram = false;
break;
}
}
System.out.println("Thank you for using the database. May all your capitalist dreams come true.");
System.out.println("Program is now terminated.");
}
}
Комментарии:
1. Обратите внимание, что вам не нужно ничего импортировать из
java.lang
.
Ответ №1:
Вы пытаетесь создать экземпляр класса Consumer с помощью конструктора Consumer (), который не определен.
Единственный конструктор, который вы определили, — это Потребитель(строковое имя).
Вам необходимо добавить конструктор по умолчанию в свой потребительский класс:
public Consumer() {
numConsumers ;
this.name = "Undefined"; //Or just set it to null
this.streetNumber = 0;
this.streetName = " ";
this.city = " ";
this.postalCode = " ";
this.age = 0;
this.gender = " ";
MaritalStatus maritalStatus = MaritalStatus.SINGLE;
Education education = Education.HIGH_SCHOOL;
}
Комментарии:
1. Спасибо вам за помощь! Я попробую это и посмотрю, какой из них я предпочитаю продвигать в этом проекте 🙂
Ответ №2:
В вашем классе Consumer
есть только один конструктор с одним обязательным строковым параметром public Consumer(String name)
, но main
вы ничего не передаете конструктору.
Тебе следует написать
Consumer consumerOne = new Consumer("John");
Комментарии:
1. Я попробовал это, и это сработало! Я получил два других ответа с вариантами моей программы. Я попробую их и посмотрю, какой из них мне больше нравится. Спасибо вам за вашу помощь. 🙂
2. @Стивен, если это решило вашу проблему, вы можете поставить галочку рядом с ней.