2016-11-24 7 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; 
} 

}

私は連結リストに非常に新しいですし、私はそれらを理解しようとしています、このコードは、理にかなっていますか?テキストファイルに格納している文字列を保存するために何かを追加する必要がありますか?あなたはDNodeのコードを示していないが、それはまたE型を取る -

は、あなたのMyLinkedListクラスは型パラメータEを取るように見える、すべてであなたのゲームのコードに取得せずに、事前

+0

私は、あなたが 'MyLinkedList'クラスの変数' top'を初期化していない可能性がある問題を考えています。 –

+1

[_Minimal_、Complete、およびVerifiable Example]の提供を検討してください(http://stackoverflow.com/help/mcve)。関連するビットを見つけるためにあなたのすべてのコードを調べる気がしません。 – qxz

答えて

1

でいただきありがとうございます。これをStringと指定することができれば、MyLinkedListのノードに希望通りに文字列を取り込むことができます。

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

これはMyLinkedListクラスはまた、そのheadを初期化するためにDNodeを取るコンストラクタを持っていることを前提とし、かつDNodeことthisようになります。

+2

ヒント: '新しいDNode <>(それ以外の場合は** rawタイプ**を作成しています。あなたは新しいMyLinkedListの型名を必要としません...空のダイヤモンド演算子がその仕事をします! – GhostCat

+0

ありがとうございました...私はJavaを書いてからしばらくしています! – retrospectacus

+0

あなたは大歓迎です。 – GhostCat

関連する問題