2016-11-24 48 views
-1

我正在做一个程序,它返回一个长字符串变量的输出。字符串中的数据会根据用户在GUI中输入的内容而不断变化。我的问题是,我如何把它存储在我的链表中?我已经看了几个例子,但是我为我的班级提供的班级有点不同,而且我一直无法找到解决问题的方法。将字符串变量添加到链接列表?

控制器代码:

public class RentGameDialogController extends RentalStoreGUIController implements Initializable{ 

/** TextField Objects **/ 
@FXML private TextField nameField, rentedOnField, dueBackField; 

/** String for NameField **/ 
String name, rentedOn, dueBack; 

/** Game ComboBox ID's **/ 
@FXML private ObservableList<GameType> cbGameOptions; 
@FXML private ComboBox<GameType> cbGame; 

/** Console ComboBox ID's **/ 
@FXML private ObservableList<PlayerType> cbConsoleOptions; 
@FXML private ComboBox<PlayerType> cbConsole; 

/** GameType object **/ 
private GameType game; 

/** PlayerType Object **/ 
private PlayerType console; 

/** Button ID's **/ 
@FXML Button cancel, addToCart; 

/** Counter for calculating total **/ 
int gameCounter; 

/** Stage for closing GUI **/ 
private Stage currentStage; 

private MyLinkedList list = new MyLinkedList(); 




@Override 
public void initialize(URL location, ResourceBundle resources) { 

    /** Select Console **/ 
    cbConsoleOptions = FXCollections.observableArrayList(); 
    for (PlayerType p : PlayerType.values()) { cbConsoleOptions.addAll(p); } 
    cbConsole.getItems().addAll(cbConsoleOptions); 

    /** Select Game **/ 
    cbGameOptions = FXCollections.observableArrayList(); 
    for (GameType g : GameType.values()){ cbGameOptions.addAll(g); } 
    cbGame.getItems().addAll(cbGameOptions); 

} 

public String getName(){ 
    name = nameField.getText(); 

    try { 

     String[] firstLast = name.split(" "); 
     String firstName = firstLast[0]; 
     String lastName = firstLast[1]; 

    } catch (Exception e){ 
     e.printStackTrace(); 
    } 

    return name; 
} 

public String getGame() { 
    return cbGame.getSelectionModel().getSelectedItem().toString(); 
} 

public String getConsole() { 
    return cbConsole.getSelectionModel().getSelectedItem().toString(); 
} 

public String getRentedOn() throws ParseException { 

    rentedOn = rentedOnField.getText(); 


    DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); 
    Date rentedOnDate = format.parse(rentedOn); 

    Calendar cal = Calendar.getInstance(); 
    cal.setLenient(false); 
    cal.setTime(rentedOnDate); 

    try { 

     cal.getTime(); 

    } catch (Exception e) { 
     rentedOnField.setText("ERROR"); 
    } 

    return rentedOn; 

} 

public String getDueBack() throws ParseException { 

    dueBack = dueBackField.getText(); 


    DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); 
    Date dueBackDate = format.parse(dueBack); 

    Calendar cal = Calendar.getInstance(); 
    cal.setLenient(false); 
    cal.setTime(dueBackDate); 

    try { 

     cal.getTime(); 

    } catch (Exception e) { 
     dueBackField.setText("ERROR"); 
    } 

    return dueBack; 

} 

/************************************* 
* This is the method to call the other 
* String methods so their output can be 
* put into my main GUI 
* 
* 
* @return 
* @throws ParseException 
*************************************/ 

public String storePurchaseData() throws ParseException { 
    gameCounter++; 
    String toList = getName() + " | " + getGame() + " | " + getConsole() + " | " + 
      getRentedOn() + " | " + getDueBack(); 

    //Add 'toList' to the linked list here if possible 

    return toList; 
} 


@FXML 
public void handleCancelButtonAction() { 
    currentStage = (Stage) cancel.getScene().getWindow(); 
    currentStage.close(); 
} 

@FXML 
public void addToCartButton() throws ParseException { 
    appendTextArea(storePurchaseData()); 
    currentStage = (Stage) cancel.getScene().getWindow(); 
    currentStage.close(); 
}} 

此代码是我的控制器。它启动一个基本的GUI,然后我可以从我制作的所有字段中提取数据,将它们转换为字符串,然后可以将它们打印在一长串文本中。我想将字符串存储到我的链接列表类中。

链表代码:

public class MyLinkedList<E> implements Serializable { 

private DNode<E> top; 
public int size; 

public MyLinkedList() { 
    top = null; 
    size = 0; 
} 

}

我很新的链表,我想了解他们,这段代码有意义吗?我是否需要添加任何内容,比如说将我存储的字符串保存到文本文件中?

预先感谢您

+0

我看到的一个可能的问题是,您没有在MyLinkedList类中初始化变量top。 –

+1

考虑提供[_Minimal_,Complete和Verifiable示例](http://stackoverflow.com/help/mcve)。我不想筛选你的所有代码来找到相关的位 – qxz

回答

1

没有进入你的游戏代码的话,那看起来像你的MyLinkedList类需要一个类型参数E - 你还没有显示的代码DNode,但它也需要在E类型。如果您可以指定这是一个String,那么MyLinkedList的节点可以根据需要填充字符串。

DNode<String> myFirstNode = new DNode<>(null, null, "nodeData"); 
MyLinkedList<String> list = new MyLinkedList<>(myFirstNode); 

这假定MyLinkedList类也有一个构造函数一个DNode初始化其head,而DNode看起来像this

+2

提示:它应该读取'新的DNode <>(...'否则你正在创建一个**原始类型**,这将是值得的downvote;同样,你不需要新的MyLinkedList的类型名称......空钻石操作员做这项工作! – GhostCat

+0

谢谢......自从我写了任何Java以来​​已经有一段时间了! – retrospectacus

+0

非常欢迎。 – GhostCat