我是java新手,我需要一些帮助。我想在命令行中创建一个登录屏幕。我有一个菜单类,首先我希望用户选择是否要登录、注册或退出。我在注册案例中,他在其中输入了他的电子邮件、密码和他的身份,即买家或所有者(它们都是用户类的子类)。买方和所有者是我的 java 项目的两个类别。我曾想过制作一个额外的类 Person(User 的子类),带有变量 String email、int password、User identity,我想当 eshop 的用户在 identity 变量中写“Buyer”时,身份变成了买家,所以我可以将他添加到数组列表中
如果有人认为我应该做不同的事情,我很高兴听到。
import java.util.ArrayList;
import java.util.Scanner;
public class Menu{
Eshop Eshop = null;
ArrayList<Item> itemsList = new ArrayList<>();
ArrayList<Buyer> buyersList = new ArrayList<>();
User buyer = null;
User Owner = null;
boolean exit;//false
/* public static void main(String[] args){
Menu menu = new Menu();
menu.runMenu();
}
TEMPORARY MAIN TO RUN THE METHODS OF MENU CLASS
*/
Menu()
{
}
Menu(Eshop Eshop, User owner, ArrayList<Item> itemslist, ArrayList<User> buyerslist){
this.Eshop=Eshop;
this.Owner=owner;
itemsList = itemslist;
buyersList = buyerslist;
}
public void runMenu(){
printHeader();
while(!exit){
printMenu();
int choice = getInput();
performAction(choice);
}
}
public int getInput(){
Scanner kb = new Scanner(System.in);
int choice=-1;
while(choice<1 || choice >3){
try{
System.out.print("\n\nEnter your choice:");
choice = Integer.parseInt(kb.nextLine());
}
catch(NumberFormatException e){
System.out.println("Invalid selection plz try again.");
}
}
return choice;
}
public void printHeader(){
System.out.println("+-------------------------------------------+");
System.out.println("| |");
System.out.println("| Welcome to our Eshop Menu |");//+Eshop.getname();
System.out.println("| |");
System.out.println("+-------------------------------------------+");
}
public void printMenu(){
System.out.println("\nPlease make a selection:");
System.out.println("1)Login ");
System.out.println("2)Sign up");
System.out.println("3)Exit!!!!");
}
public void enteremail()
{
Scanner keyboard = new Scanner(System.in);
Scanner codeboard = new Scanner(System.in);
Scanner identityboard = new Scanner(System.in);
String email=null,identity=null;
int code=0;
System.out.println("\n\nEnter your email:");
email=keyboard.nextLine();
System.out.println("\nEnter your code:");
code=codeboard.nextInt();
System.out.println("\nEnter what you are Buyer or Owner");
identity=identityboard.nextLine();
Person p1= new Person(email,code,identity);
if(identity.equals("Buyer"))
buyersList.add(p1);//HERE IS MY PROBLEM HOW I MAKE THE IDENTITY OF PERSON CLASS TO BUYER
}
private void performAction(int choice){
switch(choice){
case 3:
exit = true;
System.out.println("Sta tsakidia!!!");
case 2:
}
}
}//THIS IS THE MENU CLASS
import java.util.ArrayList;
import java.io.*;
public class Person extends User{
int password=0;
String identity;
ArrayList <Person> personList=new ArrayList<Person>();
Person(String email,int password,String identity)
{
this.email=email;
this.password=password;
this.identity=identity;
}
public void Register(Person a)
{
personList.add(a);
}
public void setemail(String email)
{
this.email=email;
}
public String getemail()
{
return email;
}
public void setpassword(int password)
{
this.password=password;
}
public int getpassword()
{
return password;
}
public void setidentity(String identity)
{
this.identity=identity;
}
public String getidentity()
{
return identity;
}
}// THIS IS THE PERSON CLASS
公共类所有者扩展用户{私有布尔isAdmin;
Owner(String name,String email)
{
this.name=name;
this.email=email;
this.isAdmin=true;
}
}//所有者类
import java.io.*;
public class Buyer extends User
{
private int bonus=0,distance=0;
private double transfercost=0;//metaforika
protected buyerCategory category;//katigoria
private int pointcounter=0;//pointer twn agorwn
enum buyerCategory//Enum gia tin katigoria
{
BRONZE, SILVER,GOLD
}
Buyer(String name, String email,int bonus, ShoppingCart cart,int distance)//DHMIOURGOS
{
this.name=name;
this.email=email;
this.bonus=bonus;
if(bonus>=0 && bonus<100)
category=buyerCategory.BRONZE;
else if(bonus>100 && bonus<200)
category=buyerCategory.SILVER;
else if(bonus<0)
throw new IllegalArgumentException("Bonus has to positive or 0");
else
category=buyerCategory.GOLD;
this.category=category;
if(distance>=0 && distance<10)
transfercost=5;
else if(distance>=10 && distance<100)
transfercost=10;
else if(distance>=100)
transfercost=25;
else
System.out.println("Prepei na baleis thetiko distance");//Thelei exception
/*if(category == buyerCategory.SILVER)
transfercost=transfercost/2;
if(category == buyerCategory.GOLD)
transfercost=0;
*/
}
public void setbuyerCategory(Buyer buyer)
{
int temp;
temp=buyer.getbonus();
if (temp>=0 && temp<100)
category= buyerCategory.BRONZE;
if (temp>100 && temp<200)
category= buyerCategory.SILVER;
//transfercost = transfercost/2;
if (temp>200)
category= buyerCategory.GOLD;
//transfercost = 0;
}
public void awardBonus(Buyer buyer,ShoppingCart cart)
{
cart.CountShoppingCart(cart);
System.out.println("H aksia tis paraggelias sou einai:\t"+cart.calculateNet());
int ten=(int) cart.calculateNet()/10;
/*if (cart.gettotalprice()>=20 && cart.gettotalprice()<50)
temp=buyer.getbonus()+20;
else if(cart.gettotalprice()>=50 && cart.gettotalprice()<100)
temp=buyer.getbonus()+50;
else if (cart.gettotalprice()>100)
temp=buyer.getbonus()+100;
else //ligotero apo 20
temp=buyer.getbonus()+0;
*/
int temp= buyer.getbonus()+ten;
setbonus(temp);
setbuyerCategory(buyer);
if(category == buyerCategory.GOLD)
transfercost=0;
if(category == buyerCategory.SILVER)
transfercost=transfercost/2;
}
public void placeOrder(ShoppingCart so1,ItemOrdered ItemO,int quantity)
{
quantity=ItemO.getquantity();
so1.addItemOrdered(ItemO);
}
public String getname()
{
return name;
}
public String getemail()
{
return email;
}
public void setbonus(int bonus)
{
this.bonus=bonus;
}
public int getbonus()
{
return bonus;
}
public buyerCategory getCategory()
{
return category;
}
public int getdistance()
{
return distance;
}
public double gettransfercost()
{
return transfercost;
}
void print()
{
System.out.println("H stoixeia tou pelati einai:\nCategory:" +getCategory()+"\t\tName:" +getname()+ "\t\tEmail:"+getemail()+"\t\tBonus:" +getbonus()+"\t\tTransfercost:"+gettransfercost());
}
}