2016-03-26 20 views
1

我想创建一个用户定义的双向存储用户定义的金额对象。我创建一个项目对象,并给它的值或项目#和价格,而不是将对象存储在双端队列中。到目前为止,我的主要由一个单一的项目组成。每次我设置该项目时,都会将先前存储的项目值写入最近的项目中。我如何去创造一个数量不定的项目来存储它们全部?创建不确定数量的对象来放入一个deque

主要

import java.*; 
import java.util.*; 

public class MyDequeApp { 

public static void main(String[] args) 
{ 
    //variables 
    String userinNum; 
    double userinPrice; 
    int queOp; 

    //creating new Item 
    Item item1= new Item(); 

    //creating new Scanner  
    Scanner scan1=new Scanner(System.in); 

    //user input number of elements in the deque 
    System.out.println("Enter the number of elements in the que"); 
    int queElm=scan1.nextInt();  
    MyDeque theQueue=new MyDeque(queElm); 

    //do/while so while user selects 1-7 they stay in the switch/case 
    do 
    { 
     //switch/case menu 
     System.out.println("1. Insert to front"); 
     System.out.println("2. Insert to rear"); 
     System.out.println("3. Remove from front"); 
     System.out.println("4. Remove from rear"); 
     System.out.println("5. Peek front"); 
     System.out.println("6. Peek rear"); 
     System.out.println("7. Display deque"); 
     System.out.println("Anything else to Quit"); 

     //user input the case number 
     queOp=scan1.nextInt(); 
     scan1.nextLine(); 

     switch(queOp) 
     { 
      //insert to front 
      case 1: 
       System.out.println("Enter an item number"); 
       userinNum=scan1.nextLine(); 
       item1.setNum(userinNum); 
       System.out.println("Enter a price"); 
       userinPrice=scan1.nextDouble(); 
       scan1.nextLine(); 
       item1.setPrice(userinPrice); 
       System.out.println(item1.toString()); 
       theQueue.insertFront(item1); 
        break; 

      //insert to rear 
      case 2: 
       System.out.println("Enter an item numbeR"); 
       userinNum=scan1.nextLine(); 
       item1.setNum(userinNum); 
       System.out.println("Enter a pricE"); 
       userinPrice=scan1.nextDouble(); 
       scan1.nextLine(); 
       item1.setPrice(userinPrice); 
       System.out.println(item1.toString()); 
       theQueue.insertFront(item1); 
       theQueue.insertRear(item1); 
        break; 

      //remove from front 
      case 3: 
       theQueue.removeFront(); 
        break; 

      //remove from rear 
      case 4: 
       theQueue.removeRear(); 
        break; 

      //peek front 
      case 5: 
       System.out.println(theQueue.peekFront()); 
        break; 

      //peek rear 
      case 6: 
       System.out.println(theQueue.peekRear()); 
        break; 

      //display the deque 
      case 7: 
       System.out.println(theQueue.toString()); 
        break; 

      //quit 
      default: 
        break; 


     } 

    }while(queOp>0 && queOp<8); 

} 

}

回答

0

你需要添加

item1= new Item(); 

你一个既完成后,并将它添加到您的队列中,或在一个地方在你输入新数据之前,否则程序会认为item1总是相同的项目。

+0

我还是有点不清楚。你的意思是添加在申报item2,item3,第4项等?或与一个项目(变量)?你能详细说明吗? – Dan

+0

或可能递增? – Dan

+0

只是它已经写入代码中了,但是您需要将该部分向下移动到循环中,以便循环也创建新项目。这里令人困惑的部分是,item1实际上是每次循环中的不同项目,但在循环中本身具有相同的名称,而在队列中却是不同的对象。 –

相关问题