请接受我的道歉,因为无论我做什么,Java都是我的大脑无法消化的东西。目前,我有一个赋值,并编写了一段代码,并使用了构造函数(我认为如此),但不确定我是否正确地使用了它,如果是,那么需要一些指导才能重构代码。
无论如何,我正在为预订系统编写代码,用户可以选择输入值并创建一个新的显示和日期。我已经在下面的代码中实现了这一点,但是请注意,我是否正确地使用了构造函数。
import java.io.*;
import java.util.*;
public class LocalPlay extends Play {
private static String playName;
private static String playDate;
private LocalPlay(String playName, String playDate) {
this.playName = playName;
this.playDate = playDate;
}
public String getShowName() {
return playName;
}
public String getShowDate() {
return playDate;
}
public void setShowName(String value) {
this.playName = value;
}
public void setShowDate(String date) {
this.playDate = date;
}
public static void lPlayDetails() {
try {
int selection = 0;
Scanner option = new Scanner(System.in);
System.out.println();
System.out.println("Press 1 to Add a New Play/ Show: ");
System.out.println("Press 2 to View existing Play: ");
System.out.println("Press 3 to delete existing Play: ");
System.out.println("Press 4 for Previous Menu: ");
System.out.println();
System.out.print("Kindly make the selection: ");
selection = option.nextInt();
if (selection == 1) {
addPlay();
} else if (selection == 2) {
viewPlay();
} else if (selection == 3) {
deletePlay();
} else if (selection == 4) {
managePlay();
} else
while (selection != 1 || selection != 2 || selection != 3) {
System.out.println();
System.out.println(selection + " is not a valid option. ");
managePlay();
}
} catch (InputMismatchException ime) {
System.out.println("Invalid option selected.");
System.out.println("Try again");
lPlayDetails();
}
}
private static void addPlay() {
String name;
String date;
Scanner option = new Scanner(System.in);
System.out.print("Enter name of Play: ");
name = option.nextLine();
System.out.print("Enter date of Play: ");
date = option.nextLine();
LocalPlay lp = new LocalPlay(name, date);
System.out.println("The name of play is " + playDate + " date played is " + playDate);
lPlayDetails();
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("play.txt"));
writer.write(name + " " + date);
} catch (IOException e) {
} finally {
try {
if (writer != null)
writer.close();
} catch (IOException e) {
}
}
return;
}
private static void deletePlay() {
System.out.println("Method not implemented");
lPlayDetails();
}
private static void viewPlay() {
System.out.println("Method not implemented");
lPlayDetails();
}
}发布于 2016-04-14 12:26:47
一般来说,一种方法应该做一件事。例如,addPlay应该添加一个play (虽然对于play类来说它是一个奇怪的方法,因为一个剧本通常不能拥有另一个剧本)。但是您的方法不只是添加一些内容,它实际上检索用户输入、打印内容、将内容写入文件,然后调用一个看似无关的方法,该方法要求更多的用户输入并以某种方式处理。
还非常不清楚您的LocalPlay类实际上应该做什么。查看字段、构造函数和getter/setter,它看起来好像保存了一次播放的数据,但也可以添加一个剧本,这是没有意义的。
您绝对应该尝试将数据的保存与用户输入的解析分离开来。
您还应该尝试更好地定义lPlayDetails和addPlay的任务和区别,并且应该尝试删除令人困惑的调用结构(函数相互调用,这使得很难跟踪程序的控制流)。
play和show之间似乎没有什么区别,您似乎是在交替使用这两种方法。在这种情况下,只使用其中一个术语的清晰度。UnsupportedOperationException的东西。lPlayDetails:目前还不清楚这种方法是干什么的。这个名字含糊不清,缺少一个JavaDoc注释。也不清楚与addPlay的确切区别是什么。LocalPlay中创建了一个新的addPlay。它似乎没有任何理由,而且似乎没有被使用过。https://codereview.stackexchange.com/questions/125669
复制相似问题