Question about multiple classes and Linked Lists

Lets say you have 4 classes: LinkedList which is the main class, Node, Card, and Hand. im not putting any constructors yet
The card class keeps track of a card such as a king of diamonds:
public class Card {
string suit;
string rank;
the node class has a Card object and another node object so it would be
public class Node {
Card c;
Node next;
the hand class keeps track of the users hand. This program will ask the user if they want to add, remove, print out the hand, or print out the score of the hand, I guess it would be like this
public class Hand {
Node head;
The linkedlist class will contain all the methods for doing the above
now my questions are. Lets say I want to add a card, so I would have to add a new Node which contains the card. If i wanted to access the new nodes card contents, lets call this node g, can i do, g.c.suit and g.c.rank in which this case c is the card object in Node. Also, these are not going to be nested classes, they are going to be 4 seperate classes, if I declare all variables as private will I need to extend the classes or not and if there is a better way, let me know. Thanks alot for all your help and previous help.

here is an example of Card and Hand ...
not saying its good design
but it does work
public class Cards {
public static void main(String[ ] args) {
Card c1 = new Card ("ace", "diamonds");
Card c2 = new Card ("two", "spades");
Card c3 = new Card ("three", "hearts");
Hand a1 = new Hand ();
a1.add(c1);
a1.add(c2);
a1.add(c3);
System.out.println("\nshowing hand ...");
a1.show();
System.out.println("\ndeleting " + c2.num + " " + c2.suite);
a1.del(c2);
System.out.println("\nshowing hand ...");
a1.show();
} // main
} // class
class Hand exists in 3 states
and is designed to be a chain of cards ...
1. when class Hand is first created
   a. it has no card
   b. and no nextHand link
2. when somecard is added to this Hand
   a. it has a card
   b. and the nextHand link is null
3. when somecard is attempted to be added to this Hand
   and it already has a card
   then a nextHand is created
   and the somecard is added to the nextHand
   a. so the Hand has a card
   b. and the Hand has a nextHand
class Hand {
public Card acard;
public Hand nextHand;
public Hand () {
  acard = null;
  nextHand = null;
public void add (Card somecard) {
  if (acard == null) {
    acard = somecard;
    return;
  if (nextHand == null) nextHand = new Hand();
  nextHand.add (somecard);
delete this Hand by making this Hand
refer to the next Hand
thus skipping over this Hand in the nextHand chain
for example, removing Hand 3 ...
1  -  2  -  3  -  4   becomes
1  -  2  -  4
public void del (Card somecard) {
  if (acard == somecard) {
    if (nextHand != null) acard = nextHand.acard;
    else acard = null;
    if (nextHand != null) nextHand = nextHand.nextHand;
    return;
  nextHand.del(somecard);
public void show() {
  if (acard == null) return;
  System.out.println(acard.num + " " + acard.suite);
  if (nextHand != null) nextHand.show ();
} // class
class Card {
public String num;
public String suite;
Card (String num, String suite) {
  this.num = num;
  this.suite = suite;
} // class

Similar Messages

  • Question about abstract classes and instances

    I have just read about abstract classes and have learned that they cannot be instantiated.
    I am doing some exercises and have done a class named "Person" and an abstract class named "Animal".
    I want to create a method in "Person" that makes it possible to set more animals to Person objects.
    So I wrote this method in class Person and compiled it and did not get any errors, but will this work later when I run the main-method?
    public void addAnimal(Animal newAnimal)
         animal.add(newAnimal);
    }Is newAnimal not an instance?

    Roxxor wrote:
    Ok, but why is it necessary with constructors in abstract classes if we don�t use them (because what I have understand, constructors are used to create objects)?Constructors don't create objects. The new operator creates objects. An object's c'tor is invoked after the object has already been created. The c'tors job is to initialize the newly-created object to a valid state. Whenever a child object is created, the parent's c'tor is run before the child's c'tor, so that by the time we're inside the child's c'tor, setting up the child's state, we know that the parent (or rather the "parent part" of the object we're initializing) is in a valid state.
    Constructor rules:
    1) Every class has at least one ctor.
    1.1) If you do not define an explicit constructor for your class, the compiler provides a implicit constructor that takes no args and simply calls super().
    1.2) If you do define one or more explicit constructors, regardless of whether they take args, then the compiler no longer provides the implicit no-arg ctor. In this case, you must explicitly define a public MyClass() {...} if you want one.
    1.3) Constructors are not inherited.
    2) The first statement in the body of any ctor is either a call to a superclass ctor super(...) or a call to another ctor of this class this(...) 2.1) If you do not explicitly put a call to super(...) or this(...) as the first statement in a ctor that you define, then the compiler implicitly inserts a call to super's no-arg ctor super() as the first call. The implicitly called ctor is always super's no-arg ctor, regardless of whether the currently running ctor takes args.
    2.2) There is always exactly one call to either super(...) or this(...) in each constructor, and it is always the first call. You can't put in more than one, and if you put one in, the compiler's implicitly provided one is removed.

  • Question about multiple class files

    I just started learning JAVA a couple of days ago and the first program I wrote had two classes in one file. here is the program :
    class fib_num {
    public int value;
    public boolean is_even;
    class Fibonacci {
    /** Print the Fibonacci sequence for values < MAX and mark even numbers with an asterick */
    private static final int MAX = 50;
    private static final String Title = "The Fibonacci sequence for values less than " + MAX + ":";
    private static fib_num[] fib = new fib_num[MAX];//This is actually an array of object
    //references to objects of the fib_num class
    public static void main(String[] args) {
    System.out.println(Title);
    //We must initialize each element of the array also !!!!
    for (int i = 0; i < fib.length; i += 1) {
    fib = new fib_num();
    int lo = 1, hi = 1;
    fib[0].value = lo;
    fib[0].is_even = false;
    fib[1].value = hi;
    fib[1].is_even = false;
    for (int i = 2; i < fib.length; i += 1) {
    //create the next Fibonacci number and then save the previous Fibonacci number
    hi = lo + hi;
    lo = hi - lo;
    fib.value = hi;
    //now indicate if the Fibonacci number is even/odd
    if (fib.value % 2 == 0) {
    fib.is_even = true;
    }else {
    fib.is_even = false;
    print (fib);
    //This method prints an array of Fibonacci numbers
    public static void print(fib_num[] array) {
    if (array == null || array.length == 0)
    throw new IllegalArgumentException();
    String mark;
    for (int i = 0; array.value < MAX; i += 1) {
    if (array.is_even) {
    mark = "*";
    }else {
    mark = "";
    System.out.println((i + 1) + ": " + array.value + mark);
    I ran the program and everything went fine. But today I started to write another program with two classes. However the file will not compile and I get an error about interfacing or something. here is the program:
    Note: it's not nearly complete.
    class enumerate {
    //print out all permutations of a list of integers
    public static final int MAX = 4;
    public static int[] initialize(int[] nums) {
    for (int i = 0; i < nums.length; i++) {
    nums = i + 1;
    return nums;
    public static void print(int[] nums) {
    for (int i = 0; i < nums.length; i++) {
    System.out.print(nums);
    System.out.println("");
    public static void swap (int[] nums, int i, int j) {
    int temp = nums;
    nums = nums[j];
    nums[j] = temp;
    public static void main (String[] args) {
    int[] list = new int[MAX];
    list = initialize(list);
    PermutationGenerator x = new PermutationGenerator(5);
    // Systematically generate permutations.
    import java.math.BigInteger;
    public class PermutationGenerator {
    private int[] a;
    private BigInteger numLeft;
    private BigInteger total;
    // Constructor. WARNING: Don't make n too large.
    // Recall that the number of permutations is n!
    // which can be very large, even when n is as small as 20 --
    // 20! = 2,432,902,008,176,640,000 and
    // 21! is too big to fit into a Java long, which is
    // why we use BigInteger instead.
    public PermutationGenerator (int n) {
    if (n < 1) {
    throw new IllegalArgumentException ("Min 1");
    a = new int[n];
    total = getFactorial (n);
    reset ();
    // Reset
    public void reset () {
    for (int i = 0; i < a.length; i++) {
    a = i;
    numLeft = new BigInteger (total.toString ());
    // Return number of permutations not yet generated
    public BigInteger getNumLeft () {
    return numLeft;
    // Return total number of permutations
    public BigInteger getTotal () {
    return total;
    // Are there more permutations?
    public boolean hasMore () {
    return numLeft.compareTo (BigInteger.ZERO) == 1;
    // Compute factorial
    private static BigInteger getFactorial (int n) {
    BigInteger fact = BigInteger.ONE;
    for (int i = n; i > 1; i--) {
    fact = fact.multiply (new BigInteger (Integer.toString (i)));
    return fact;
    // Generate next permutation (algorithm from Rosen p. 284)
    public int[] getNext () {
    if (numLeft.equals (total)) {
    numLeft = numLeft.subtract (BigInteger.ONE);
    return a;
    int temp;
    // Find largest index j with a[j] < a[j+1]
    int j = a.length - 2;
    while (a[j] > a[j+1]) {
    j--;
    // Find index k such that a[k] is smallest integer
    // greater than a[j] to the right of a[j]
    int k = a.length - 1;
    while (a[j] > a[k]) {
    k--;
    // Interchange a[j] and a[k]
    temp = a[k];
    a[k] = a[j];
    a[j] = temp;
    // Put tail end of permutation after jth position in increasing order
    int r = a.length - 1;
    int s = j + 1;
    while (r > s) {
    temp = a[s];
    a[s] = a[r];
    a[r] = temp;
    r--;
    s++;
    numLeft = numLeft.subtract (BigInteger.ONE);
    return a;
    I thought the error had somethin to do with only having one class per .java file since the compiler creates a .class file. But how come my first program had two classes and it was OK. Is it b/c the second class was merely a collection of fields, almost like a simple struct in C?
    Any help would be appreciated. Thanks

    Move the import java.math.BigInteger line to the start of the file.
    Use the "[ code ] [ /code ]" tags around your code when you post, it makes reading it a lot easier.

  • Question about Resetting Widgets and Linking

    Hi everyone!
    This is actually my first day on this forum so please forgive me that I haven't participated in discussions. But I have a few questions and any insight into these would be extremely helpful!
    My first question is: Is there a way to reset the entire iBook to its original state, where no answers are marked in to quiz questions and other used widgets are reset to their original views? Or would the entire book just need to be deleted and redownloaded again? The reason why I wanted to know is because our particular project would be used in a classroom setting and multiple children might use the same book and participate in the same widget activities. Being able to reset the activities to their default would allow the new user to not already see the previous user's responses.
    My second question is: Has anyone found a work-a-round to getting the links to work better? For example, creating a references page, and having items in the iBook link to the references page, and having the references page link back to the original page? I found a way to create a references page, and get the pages to link back and forth to each other but only if I placed a gallery or interactive activity on both pages. Is there a way to link one page to another without an interactivity?
    Thanks so much for looking at my questions! Any help regarding either of them would be great.

    1.) There is a [Clear Answer] button at the bottom of each review widget. Design and execute a process between sessions to use it, or delete that book and push a new one.
    2.) This gets asked a lot
    The answer is always the same. There is no reverse path outside of creating another pair of interactive bookmark/hyperlinks to create one. A→B & B→A

  • Question about multiple tables and formulas in numbers

    I  was wondering about having a formula that effects one table based on data in the other table. I have a spreedsheet that i created for work. In column A is a list of addresses. In column B-ZZ is a list of "billing codes" the get applied to the service work done for that address.Its kind of difficult to look at this large spreadsheet on my iphone and edit it on the go. Is there a way to, Have another column, possibly on sheet 2 or something, where i type in these "billing codes" and they would fill an x or some other character in cell that corrisponds with that billing code on that address line? So to be as plain as possible, I want to enter data in one cell (another sheet if possible) and have it "mark" another cell in response to the specific data on that "entry cell." Im thinking this way because instead of scrolling back and fourth on the sheet on my iphone, to "mark" the boxes, i could just navigate to sheet 2 enter the data, or "billing codes" and they would "X" the cell that would match up with the code column and address row. each address row would have a seperate "entry field" in sheet 2, to make the formula easier. thanks for any help

    Tom,
    That's a lot of columns for jsut a table of marks that reflect an input. Sure, you could have each cell in that giant table check to see if some corresponding cell contains certain text, but that document is going to be slower than you might be able to tolerate.
    Jerry

  • Question about multiple listeners and vip addresses in rac.

    We have a 2 node rac cluster running 10.2.0.3 on rhel4 on the itanium platform. We have a need where we want to connect the 2 hosts up to another network temporarily by configuring an additional network interface on each server so that we can test some connections from a different network.
    My question is can you configure multiple listeners on the same server in which the newly added listener can be configured to service requets on the new network interface?
    Because it's rac would you need to configure an additional vip address? I am not sure that you can have multiple vip's on a server?
    Has anyone configured rac in such a way, any help is appreciated.

    can you configure multiple listeners on the same server in which the newly added listener can be configured to service requets on the new network interface?Yes, you can but you should not be doing this. Listener is a node specific resource and one listener can server multiple services. You actually can create multiple services within the database for different set of users and all can be registered to the same listener.
    Because it's rac would you need to configure an additional vip address? What do you mean by additional IP?
    You have installed 10g RAC where you have already configured virtual IPs. Why do you want to have additional one? node1 - static ip1, vip1, pvtip1
    node2 - static ip2 vip2, pvtip2
    total 6
    I am not sure that you can have multiple vip's on a server?Nothing to do with the server, they are based on public IP. Yes you can create multiples vip's based on same public IP. This is possible, But you do not need to do this in RAC environment.

  • Question about Abstract Classes and Class Inheritance

    The semester is winding down, and the assignments are getting more complicated....
    Prof has given us a project involving both an interface and an abstract class. There's a class Person, then an abstract class Employee that extends Person, and two types of Employees (Hourly and Salaried) that extend Employee. The finished assignment is a type of payroll program that's supposed to be able to store both types of Employees and related info (name, salary, etc). One thing the prof suggested was to store both HourlyEmployees and SalariedEmployees in an array of Employees. But you can't instantiate an array of Employees directly, of course, since it's an abstract class.
    So is it possible to create an array of Persons, cast either HourlyEmployees or SalariedEmployees into Employee objects, and then store the Employee objects in the Person array? And if I do that, can I still use methods particular to the SalariedEmployees and/or HourlyEmployees once they are in the Person array? Or can I store SalariedEmployee and HourlyEmployee directly in an array of Persons, without having to cast them into anything else? (In that case, I'm not sure what the point of having the abstract Employee class is, though). Do they become just generic "Persons" if I do this?
    Thanks for any help!

    But you
    can't instantiate an array of Employees directly, of
    course, since it's an abstract class.Sure you can. You just can't instantiate Employee (the abstact class itself, as opposed to its subclasses) objects.
    Employee[] employees = new Employee[20];
    employees[0] = new HourlyEmployee();That should work.
    So is it possible to create an array of Persons, cast
    either HourlyEmployees or SalariedEmployees into
    Employee objects, and then store the Employee objects
    in the Person array?You could do that as well, but you shouldn't need to cast it.
    Given the type hierarchy you describe, an HourlyEmployee is a Person, so you should be able to assign an HourlyEmployee directly to a Person-valued variable.
    And if I do that, can I still use
    methods particular to the SalariedEmployees and/or
    HourlyEmployees once they are in the Person array?No. If the method doesn't exist in Person, then you can't call it on a Person variable, even if the method does exist in the class implementing Person.
    But if the method exists in Person, but is implemented and possibly overridden in HourlyEmployee, you can still invoke it, by just invoking the Person method.
    public interface Person {
      public void feed();
    public abstract class Employee implements Person {
      public abstract void hire();
    public class HourlyEmployee extends Employee {
    // then:
    Person persons = new Person[20];
    // add HourlyEmployees or SalariedEmployees to persons array...
    persons[0].feed(); // OK!
    persons[0].hire(); // NOT OK!

  • Question about Outlook 2010 and Contact list

    Good afternoon all, OK so I have been trying to research this problem but I don't know if it can be done. In Outlook 2010 we created a contact list that we use to fax and email referring physicians. In Outlook when you click on a contact in that list and add it to the "To" line it come up with the persons name of the contact I picked, but what if I wanted to fax that contact and needing just the fax number that in that contact card to only come up. Is there a setting that allows me to change what info I want to be seenin the"TO" line of the email?To give a bit more info: Our company just purchased the GFI FaxMaker software that allows us to fax from our PC.We purchased it because it integrated with MS Outlook. What wasn't told to us wasthat we had to add "@faxmaker.com"at the end of the fax number. So hence my problem with outlook....
    This topic first appeared in the Spiceworks Community

    Good afternoon all, OK so I have been trying to research this problem but I don't know if it can be done. In Outlook 2010 we created a contact list that we use to fax and email referring physicians. In Outlook when you click on a contact in that list and add it to the "To" line it come up with the persons name of the contact I picked, but what if I wanted to fax that contact and needing just the fax number that in that contact card to only come up. Is there a setting that allows me to change what info I want to be seenin the"TO" line of the email?To give a bit more info: Our company just purchased the GFI FaxMaker software that allows us to fax from our PC.We purchased it because it integrated with MS Outlook. What wasn't told to us wasthat we had to add "@faxmaker.com"at the end of the fax number. So hence my problem with outlook....
    This topic first appeared in the Spiceworks Community

  • Questions about multiple nodes and licenses

    Nico, What would be the right forum to ask the licensing questions i stated above? Jimit

    I can't and won't discuss license issues, but for the last question (mixing nodes with different operating systems) there's a fairly easy answer why this can lead to all sorts of trouble.Windows and Linux/Unix usually work in different code pages, making it hard to interchange flat files.Text lines in Windows flat files are usually terminated by the two characters Carriage Return followed by Line Feed (0x0D followed by 0x0A) whereas under Linux/Unix text lines are always terminated by Line Feed characters (0x0a) only. Not all Windows and Linux/Unix programs can handle this difference without trouble.Very often Windows and Linux/Unix machines run with difference 8-bit code pages for the nodes themselves. This means that all sorts of diacritics (such as German Umlaute ä, ö, ü, ß) may be processed by programs on both platforms in different ways.Shell scripts and batch files resp. all sorts of operating system commands are very much incompatible between these systems, making it almost impossible (ok, just extremely difficult) to write scripts running on both system worlds.Last not least Integration Services in a server grid must be of the same operating system and run in the same code page, meaning that these two nodes will never be able to be part of the same server grid. That's just what came to my mind within a few seconds of thinking. Regards,Nico

  • A question about Object Class

    I got a question about Object class in AS3 recently.
    I typed some testing codes as following:
    var cls:Class = Object;
    var cst:* = Object.prototype.constructor;
    trace( cls === cst); // true
    so cls & cst are the same thing ( the Object ).
    var obj:Object = new Object();
    var cst2:* = obj.constructor.constructor;
    var cst3:* = obj.constructor.constructor.c.constructor;
    var cst5:* = Object.prototype.constructoronstructor;
    var cst4:* = Object.prototype.constructor.constructor.constructor;
    var cst6:* = cls.constructor;
    trace(cst2 === cst3 && cst3 === cst4 && cst4 === cst5 && cst5 === cst6); //true
    trace( cst == cst2) // false
    I debugged into these codes and found that cst & cst2 had the same content but not the same object,
    so why cst & cst2 don't point to the same object?
    Also, I can create an object by
    " var obj:Object = new cst();"
    but
    " var obj:Object = new cst2();"
    throws an exception said that cst2 is not a constructor.
    Anyone can help? many thanks!

    I used "describeType" and found that "cst2" is actually "Class" class.
    So,
    trace(cst2 === Class); // true
    That's what I want to know, Thank you.

  • Multiple classes and drawImage

    First I should start by saying I am VERY new to Java. I have written a program that
    uses multiple classes, and i would like to place boolean b =
    g.drawImage(cardPics[j],x2,yPos,50,75),this); in my class. I have passed Graphics g
    from paint. I am able to use g.drawString, etc, but when I try to drawImage, it will
    not even compile. I CAN use
    boolean b = g.drawImage(cardPics[j],x2,yPos,50,75,this); in paint outside of the
    classes, so I believe I have the image array set up right.
    This is what the compilers reads:
    cannot resolve symbol
    boolean b =g.drawImage(cardPics[j],x2,yPos,50,75,this);
    (The symbol that it is referring to is the period between g and drawImage)
    Any help is greatly appreciated.
    Thankyou
    Apryl

    The last argument to drawImage must be an ImageObserver. Therefore, for this line of code to work, it must be placed in a non-static method of a class that implements ImageObserver.

  • Question About Color's and Gradients

    Hi all,
    I have a question about color swatches and gradients.
    I am curious to know, if I have 2 color swatches that I make into a gradient color, is it posible to change the tint of each indivdual color in that gradient and have that applied to the gradient without having to adjust the gradients opacity.
    The reason that I'm asking this is because in creating a project I found that the colors that I chose for to make my gradient from my swatches were to dark, and while I can adjust each one's tint to my liking (if the object they were applied to was going to be a solid color) but that doesn't seem to apply to the overall gradient.
    I hope that makes sense, I know that this was something that was able to be accomplished in quark and was wondering if I can do something similar.

    If you double click your gradient swatch (after adding it to the swatches)
    Then click a colour stop in the gradient, and then change the drop down menu to CMYK (or rgb)
    And you can alter the percentages there. It's not much use for spot colours but it's a start.
    But making tint swatches would be a good start anyway.
    At least then when you double click the gradient (in the swatches) to edit it you can choose from CMYK, RGB, LAB, or Swatches and adjust each colour stop to your liking.

  • Question about clear page and reset pagination

    Hi,
    I have a question about clear pages and the reset pagination in an URL. What is the reason why a clear page doesn't also trigger a reset pagination on the pages which are cleared?
    I can't really imagine a business case where it makes sense to clear all data of page items on a page and don't reset the pagination of reports on that page which probably use a page item in there where clause...
    The drawback of this behavior is that a developer always has to set the reset pagination checkbox when he clears the target page and the even bigger drawback is that if you specify other pages to clear, you can't reset pagination for them, because reset pagination only works for the target page.
    Thanks for your input.
    Patrick
    *** New *** Oracle APEX Essentials *** http://essentials.oracleapex.info/
    My Blog, APEX Builder Plugin, ApexLib Framework: http://www.oracleapex.info/

    Enhancement request filed, thanks,
    Scott

  • The question about portlet customization and synchronization

    I have a question about portlet customization and synchronization.
    When I call
    NameValuePersonalizationObject data = (NameValuePersonalizationObject) PortletRendererUtil.getEditData(portletRenderRequest);
    portletRenderRequest.setPortletTitle(str);
    portletRenderRequest.putString(aKey, aValue);
    PortletRendererUtil.submitEditData(portletRenderRequest, data);
    Should I make any synchronization myself (use "synchronized" blocks or something else) or this procedure is made thread-safe on the level of the Portal API?

    HI Dimitry,
    I dont think you have to synchronize the block. i guess the code is synchronized internally.
    regards,
    Harsha

  • Palm Treopro--Sync multiple calendars and task lists

    I have more than one calendar and task list that I use in Outlook.  Is there a way to sync multiple calendars and task lists on the Palm Pro?
    Thanks,
    Al
    Post relates to: Treo Pro T850 (Sprint)

    I just upgraded to Pre 2 a couple weeks ago and have been experiencing similar problems with my Verizon model and a replacement.  Apparently it is widespread; there is a lengthy (11 pages so far) thread on it in this Community forum.  Try http://palm.lithium.com/t5/Synergy-webOS/strange-behavior-syncing-Pre2-Calendar-with-Google-Calendar... or Google the phrase "strange behavior syncing Pre 2 Google" (look for a search response that references "11 pages" or you'll miss some  of the more recent posts).  Not sure there are any good answers at the moment.  Very disappointing if so; the Google/Pre sync worked flawlessly on my Pre Plus for the past 15 months (webOS v.1.4.5)

Maybe you are looking for

  • How to undo a batch change of all titles in iPhoto

    I accidentally secected all of my photos thinking I was in an album and batch changed all 30,000 photos titles to the same tilte. I had to forse quit due to the unstopable spinning ball. I'm about to cry but hope someone can help me... Mr. Old Toad??

  • KER1-Changes not update in KE30

    Hi folks, i have sa problem with KER1. I have done a change on existing key figure scheme. I have added in a element formula 5010  a new element 9002. Now the formula is 9001+9002. I have saved, now i want to now why in KE30 i don't see any changes,

  • Have the flash video activate a function at the end of the movie

    I have a movie that when it finishes playing I want a function to happen. It is a tutorial movie and I want to require the viewer to watch the whole video before they can click on the html to go to the next page. How do I do that? Thank you.

  • Rattle on the Right Hand Side of my computer

    Annoying Rattle on the Right hand side of the computer near the CD slot. There is no CD left in it. Any solutions?

  • Can I get it? Nope. Yup, huh?

    Hi Im getting quite confused about Infinity.  I have tried to order it and it said I could not place an order, so I checked to see when my exchange would be upgraded and it turned out it was already done a while back, so I tried to get Infinity again