Help with comparing with .equals

I'm trying to compare two strings and then set font color of a JLabel accordingly. However, I'm having trouble with comparing the strings. I have a dialog inside each if statement for testing, because at first I thought I was just having a problem with the font color. Anyway, Here is what I've tried:
if ((myString.equals("myTestText"))==true) {...This shows no errors, but does nothing.
String string = "myTestText";
if ((myString.equals(string))==true) {...Again, no errors, but doesn't work. I'm sure that myString holds a string, and that its value is correct.
What am I doing wrong?

Yes, they are both equal. The string is parsed from an xml feed, and in the xml feed it is like so:<urgency>
Expected
</urgency>
<severity>
Severe
</severity>
<certainty>
Likely
</certainty>So when I saved the string, it kept the space between the end of <severity> and the actual string I wanted. I didn't notice this at first. The other xml feed I parsed has the value right after the element, with no space, like so:<element>value</element>Therefore on that one I didn't need to trim as there were no spaces added. As far as how I declared the string, here is how (I think this is what you wanted to know?):private static String warningSeverity = null;
warningSeverity = (getTagValue("severity",eElement));
//Then I have the trim next:
warningSeverity = warningSeverity.trim();

Similar Messages

  • Hi guys, need your help with iCloud notes on Mac 10.7.5; I've found this feature's more useful comparing with stickers, however can't pin notes to desktop or dock, "double click"on the note doesn't work with this version of software.

    Hi guys! Need you help with iCloud Notes on Mac Pro 10.7.5. I've found this apllication more useful comparing with "stickers", however can't pin it to desktop or dock. Thanks a lot in advance!

    Hi guys! Need you help with iCloud Notes on Mac Pro 10.7.5. I've found this apllication more useful comparing with "stickers", however can't pin it to desktop or dock. Thanks a lot in advance!

  • FormsCentral retiring in July???!!!  Are you freaking kidding me?  My clients use this feature all the time.  What do you suggest I do now?  What service do I go with that is comparable to it?  I need help with this asap!

    FormsCentral retiring in July???!!!  Are you freaking kidding me?  My clients use this feature all the time.  What do you suggest I do now?  What service do I go with that is comparable to it?  I need help with this asap!

    I would suggest checking out http://www.logiforms.com. They have really good PDF support for both hosted PDF's and generating PDFs. You can:
    populate PDF forms from a web form submission
    Merge multiple PDF's together using conditional logic
    Include uploaded images in the generated PDF
    Get Electronic signatures on PDF's
    Use conditional logic when creating PDF's
    Convert HTML to PDF. You design in HTML and CSS and use form field wildcards and generate the PDF
    More of the PDF features are explained here:
    PDF Form Creator | PDF Form Maker | V3.Logiforms.com
    They are also offering a 25% discount to anyone coming from Forms Central...

  • Help with Sort function in Terminal

    Hello all... this is my first post on here as I'm having some trouble with some Termianl commands. I'm trying to learn Terminal at the moment as it is but I would appreciate some help with this one....
    I'm trying to sort a rather large txt file into alphabetical order and also delete any duplicates. I've been using the following command in Terminal:
    sort -u words.txt > words1.txt
    but after a while I get the following error
    sort: string comparison failed: Illegal byte sequence
    sort: Set LC_ALL='C' to work around the problem.
    sort: The strings compared were `ariadnetr\345dens\r' and `ariadnetr\345ds\r'.
    What should my initial command be? What is Set LC_ALL='C'?
    Hope you guys can help?

    Various languages distinct sorting - collation - sequences. 
    The characters can and variously do sort differently, depending on what language is involved. 
    Languages here can include the written languages of humans, and a few settings associated with programming languages.  This is all part of what is known as internationalization and localization, and there are are various documents around on that topic.
    The LC_ALL environment variable sets all of the locale-related settings en-mass, including the collation sequence that is established via LC_COLLATE et al, and the sort tool is suggesting selecting the C language collation.
    Here, the tool is suggesting the following syntax:
    LC_ALL=C sort -u words.txt > words1.txt
    This can also be done by exporting the LC_ALL, but it's probably better to just do this locally before invoking the tool.
    Also look at the lines of text in question within the files, and confirm the character encoding of the file.
    Files can have different character encodings, and there's no reliable means to guess the encoding.  For some related information, see the file command:
    file words.txt
    ...and start reading some of the materials on internationalization and localization that are posted around the 'net. Here's Apple's top-level overview.
    In this case, it looks like there's an "odd" character and probably an å character on that line and apparently the Svenska ariadnetrådens. 
    Switching collation can help here, or - if the character is not necessary - removing it via tr or replacing it via sed can be equally effective solutions. 
    Given it appears to be Svenska, it might work better to switch to Svenska collation thanto  the suggested C collation.
    I think that's going to be sv_SE, which would make the command:
    LC_ALL=sv_SE sort -u words.txt > words1.txt
    This is all generic bash shell scripting stuff, and not specific to OS X.  If you haven't already seen them, the folks over at tldp have various guides including a bash guide for beginners, and an advanced bash scripting guide - both can be worth skimming.  They're not exactly the same as bash on OS X and some specific commands and switches can differ, and as bash versions can differ, but bash is quite similar across all the platforms.

  • Help with final Graduation Project

    I've done with the majority of it, however I need help with the remove method for a B tree. when removing from a non-leaf node, your remove must replace the removed item with the smallest item in the right subtree.
    The code:
    import java.util.Stack;
    public class BTreeG<E extends Comparable< ? super E>> {
        // Each Btree object is a B-tree header.
        // This B-tree is represented as follows: order is the maximum number
        // of children per node, and root is a link to its root node.
        // Each B-tree node is represented as follows: size contains its size; a
        // subarray items[0...size-1] contains its elements; and a subarray
        // childs[0...size] contains links to its child nodes. For each element
        // items, childs[i] is a link to its left child, and childs[i+1] is a
    // link to its right child. In a leaf node, all child links are null.
    // Moreover, for every element x in the left subtree of element y:
    // x.compareTo(y) < 0
    // and for every element z in the right subtree of element y:
    // z.compareTo(y) > 0.
    private final int order;
    private Node root;
    public BTreeG () {
         // Construct an empty B-tree of order 5.
    this(5);
    public BTreeG (int k) {
    // Construct an empty B-tree of order k.
    root = null;
    order = k;
    public E get(E item){
    if (root == null)
    return null;
    Node node = root;
    while (true) {
    int pos = node.searchInNode(item);
    if (item.equals(node.items[pos]))
    return (E)node.items[pos];
    else if (node.isLeaf())
    return null;
    else
    node = node.childs[pos];
    public void insert (E item) {
    // Insert element item into this B-tree.
    if (root == null) {
    root = new Node( item);
    return;
    Stack ancestors = new Stack();
    Node curr = root;
    while (true) {
    int currPos = curr.searchInNode(item);
    if (item.equals(curr.items[currPos]))
    return;
    else if (curr.isLeaf()) {
    curr.insertInNode(item, null, null, currPos);
    if (curr.size == order) // curr has overflowed
    splitNode(curr, ancestors);
    return;
    } else {
    ancestors.push(new Integer(currPos));
    ancestors.push(curr);
    curr = curr.childs[currPos];
    private void splitNode (Node node,
    Stack ancestors) {
    // Split the overflowed node in this B-tree. The stack ancestors contains
    // all ancestors of node, together with the known insertion position
    // in each of these ancestors.
    int medPos = node.size/2;
    E med = (E)node.items[medPos];
    Node leftSib = new Node(
    node.items, node.childs, 0, medPos);
    Node rightSib = new Node(
    node.items, node.childs, medPos+1, node.size);
    if (node == root)
    root = new Node( med, leftSib,
    rightSib);
    else {
    Node parent =
    (Node) ancestors.pop();
    int parentIns = ((Integer)
    ancestors.pop()).intValue();
    parent.insertInNode(med, leftSib, rightSib,
    parentIns);
    if (parent.size == order) // parent has overflowed
    splitNode(parent, ancestors);
    public void remove (E item) {
         // your code goes here
    public void print () {
    // Print a textual representation of this B-tree.
    printSubtree(root, "");
    private void printSubtree (Node top, String indent) {
    // Print a textual representation of the subtree of this B-tree whose
    // topmost node is top, indented by the string of spaces indent.
    if (top == null)
    System.out.println(indent + "o");
    else {
    System.out.println(indent + "o-->");
    boolean isLeaf = top.isLeaf();
    String childIndent = indent + " ";
    for (int i = 0; i < top.size; i++) {
    if (! isLeaf) printSubtree(top.childs[i], childIndent);
    System.out.println(childIndent + top.items[i]);
    if (! isLeaf) printSubtree(top.childs[top.size], childIndent);
    //////////// Inner class ////////////
    private class Node<E extends Comparable< ? super E>>
    // Each Node object is a B-tree node.
    private int size;
    private E[] items;
    private Node[] childs;
         private Node (E item) {
         this (item, null, null);
    private Node (E item, Node left, Node right) {
    // Construct a B-tree node of order k, initially with one element, item,
    // and two children, left and right.
    items = (E[])new Comparable[order];
    childs = new Node[order+1];
    // ... Each array has one extra component, to allow for possible
    // overflow.
    this.size = 1;
    this.items[0] = item;
    this.childs[0] = left;
    this.childs[1] = right;
    private Node ( E[] items, Node[] childs, int l, int r) {
    // Construct a B-tree node of order k, with its elements taken from the
    // subarray items[l...r-1] and its children from the subarray
    // childs[l...r].
    this.items = (E[])new Comparable[order];
    this.childs = new Node[order+1];
    this.size = 0;
    for (int j = l; j < r; j++) {
    this.items[this.size] = items[j];
    this.childs[this.size] = childs[j];
    this.size++;
    this.childs[this.size] = childs[r];
    private boolean isLeaf () {
    // Return true if and only if this node is a leaf.
    return (childs[0] == null);
    private int searchInNode (E item) {
    // Return the index of the leftmost element in this node that is
    // not less than item.
    int l = 0, r = size-1;
    while (l <= r) {
    int m = (l + r)/2;
    int comp = item.compareTo((E)items[m]);
    if (comp == 0)
    return m;
    else if (comp < 0)
    r = m - 1;
    else
    l = m + 1;
    return l;
    private void insertInNode (E item, Node leftChild,
    Node<E> rightChild, int ins) {
    // Insert element item, with children leftChild and rightChild, at
    // position ins in this node.
    for (int i = size; i > ins; i--) {
    items[i] = items[i-1];
    childs[i+1] = childs[i];
    size++;
    items[ins] = item;
    childs[ins] = leftChild;
    childs[ins+1] = rightChild;

    I've done with the majority of it, however I need
    help with the remove method for a B tree. when
    removing from a non-leaf node, your remove must
    replace the removed item with the smallest item in
    the right subtree. It's hard to implement a B tree. That's why you rather use a standard implementation. If not you're basically on your own. Don't expect others to do it for you. Why should they bother? Please tell us when you're finished and where we can download you B-tree implementation -:)

  • Problem with Equals/Contains

    Hello,
    I am learning .net c# and i wanted to rewrite Stack collection.
    But when i tried rewriting Contains method, i think i found little bug.
    I cant compare two instances of class.
    I created class Test and i put it into stack, then i made new instance of class Test and i tried do Contains, how i found out it always returns False. Same is with Equals, ReferenceEquals and ==. Why is this happening? Both classes contains same items with
    same things. Why it isnt True?
    Thanks for answer.

    Comparison and equality are one of the things that are done in an strange way in .NET.
    First thing to pay attention is that, there is difference between equality comparison and less than/greater than comparison. On the whole, equality is used in searching and looking up while comparison is used in sorting. Equality comparison is always doable.
    You compare whether two things are equal. But less than/greater than might not necessarily possible in all situations.
    There are also two general ways when comparing two things (whether for equality or less than/greater than):
    Objects themselves perform comparison on each other
    Another object -and external object- performs comparison on them
    In first approach, we call the Equals() method an object, passing it the other object we intend to compare its equality with, and the former object performs equality comparison himself and sees whether it is equal to the given object or not. While Equals()
    method provides us a good point to override comparison, the limitation is that, we can override Equals() only once in a class, while there might be different equality contexts available for comparison.
    For example in a collection of Person objects, one time we might compare equality based on Lastname and another time we might want to do it based on Birthdate. Using Equals() method regretfully gives us an only chance for comparison. Also, it corrupts the
    equality rule of all of our objects. Apparently we don't want to change the equality algorithm of our objects, one of which is equality comparison based on reference that is done intrinsically by object base class. Also, what if we don't access to the source
    code of the class we are using its instances in our application?! Let's not think about such a frightening situation (in that case, inheritance is an ultimate shot, however, not the only shot, as we will see soon). This leads us to the other approach.
    In the second approach we use another object as a judge that performs comparison (whether it be equality or less than/greater than) and proclaims the result. Because the judge object is external and can be any object, we will potentially have numerous
    choices at hand to use for comparison. One time we might use a LastNameEqualityComparer object, another time use a BirthdateEqualityComparer and another time use whatever equality comparer we want. We have total freedom.
    Now, we get to the point where I said there is strange or anomaly behavior in .NET collections regarding comparison.
    Some collections such as Dictionary<TKey, TValue> provides us a way to pass them an equality comparer object in their constructors when we are creating an instance of them.
    public Dictionary(IEqualityComparer<TKey> comparer)
    exmaple: https://msdn.microsoft.com/en-us/library/ms132072(v=vs.110).aspx
    public class Example
    public static void Main()
    // Create a new Dictionary of strings, with string keys
    // and a case-insensitive comparer for the current culture.
    Dictionary<string, string> openWith =
    new Dictionary<string, string>(
    StringComparer.CurrentCultureIgnoreCase);
    // Add some elements to the dictionary.
    openWith.Add("txt", "notepad.exe");
    openWith.Add("bmp", "paint.exe");
    openWith.Add("DIB", "paint.exe");
    openWith.Add("rtf", "wordpad.exe");
    // Try to add a fifth element with a key that is the same
    // except for case; this would be allowed with the default
    // comparer.
    try
    openWith.Add("BMP", "paint.exe");
    catch (ArgumentException)
    Console.WriteLine("\nBMP is already in the dictionary.");
    // List the contents of the sorted dictionary.
    Console.WriteLine();
    foreach( KeyValuePair<string, string> kvp in openWith )
    Console.WriteLine("Key = {0}, Value = {1}", kvp.Key,
    kvp.Value);
    But some collections don't provides us a way in their constructors to pass them a custom comparer. Unfortunately your case, Stack, is among them and Stack doesn't have such a constructor.
    If we read the MSDN documentation of the Contains() method in the non-generic Stack, and generic Stack<T> classes, we get the following sayings that reveals everything:
    non-generic Stack.Contains(): this method determines equality by calling Object.Equals.
    generic Stack<T>.Contains(): this method determines equality using the default equality comparer EqualityComparer<T>.Default for T, the type of values in the list.
    If we use a non-generic Stack class, our only choice is overriding Equals() in the class of our object, as Andy ONeill mentioned before. But if we use non-generic Stack<T>, .NET team generously favored us one other tiny choice. We can implement the
    IEquatable<T> interface in our class that has an Equals() method and implement the algorithm of our new equality comparison in this Equals() method. Why we should do that? Because that is what EqualityComparer<T>.Default does! See MSDN documentation
    again:
    https://msdn.microsoft.com/en-us/library/ms224763(v=vs.110).aspx
    The Default property
    checks whether type T implements
    the System.IEquatable<T> interface
    and, if so, returns an EqualityComparer<T> that
    uses that implementation. Otherwise, it returns an EqualityComparer<T> that
    uses the overrides of Object.Equals and Object.GetHashCode provided
    by T.
    Although this explanation is a little misleading or vague, simply put it says, the Default property returns a comparer object that checks whether the objects being compared have implemented IEquatable<T> interface or not. If so, it uses the implemented
    Equals() of that interface in the objects, otherwise it resorts to the intrinsic Equals() method that is inherited to all objects from the object, father of all, base type.
    This IEqualityComparer<T>.Default object and that IEquatable<T> interface together help not to corrupt the innate Equals() methods of our classes.
    However, as good as what .NET team might have thought by favoring us using an IEqualityComparer<T>.Default in the Contains() method of the non-generic Stack<T> class, their solution is far from what is expected. Because again it stucks us to
    the first problem. We have only one and only one chance to define an equality comparison algorithm in our class. Naturally we can't implement an IEquatable<T> interface multiple times in our class.
    The tiny problem is that, they missed adding a new constructor in Stack<T> class that accepts an IEqualityComparer<T> like what they have done in Dictionary<TKey, TValue>. This is a shame. Because this is not a rare occasion. The same is
    true for some other collections such as Queue<T>, HashSet<T>, LinkedList<T> and List<T>. I don't know whether they have did this intentionally or they simply forgot to do that.
    So what? What should we do if we had multiple equality testing algorithms.
    Fortunatey there is still hope.
    If .NET team working on generic collections were that lazy to forget adding new constructors to generic classes, they did a good job and solved the problem from the root by adding a bunch of extension methods to all IEnumerable, IEnumerable<T> collections
    in System.Linq namspace and freed themselves forever. Look at the following extension methods in System.Linq namespace:
    public static bool Contains<TSource>(
    this IEnumerable<TSource> source,
    TSource value,
    IEqualityComparer<TSource> comparer
    You got the idea? They defined a general Contains() method for any IEnumerable<T> collection that allows us to give it a custom equality comparer object. Hooray! Problem solved. But wait. Why should we be happy? That comparer parameter might still
    use IEquatable<T> and presumes the objects have an Equals() method! Oh my gush! Still returned to the same point and the problem exists. We stuck forever! Don't freak out. Be calm.
    The IEqualityComparer<T> interface is defined this way:
    public interface IEqualityComparer<in T>
    bool Equals(T x, T y);
    int GetHashCode(T obj);
    It says, an equality comparer should have an Equals() method and it is in this very method that the equality comparison algorithm will go. This method receives two objects and compares them together using whatever algorithm the creator of the equality comparer
    class has intended.
    The good point of this IEqualityComparer<T> and that Contains<T>() extension method is that, your objects are not expected to implement an IEquatable<T> as well. This is another good news. Because we are neither forced to override
    Equals() in our class and corrupt it, nor we have to implement IEquatable<T> in them. In fact, our classes remain clean and intact and we even don't have to have their source code.
    So, this was the final cure for the malignant issue of equality comparison. The same story is true for less than/greater than comparison.
    In conclusion, what I recommend is that, never override the intrinsic Equals() method, inherited from Object, in your classes. Instead use the extension methods that has a comparer parameter in their signature and receive a comparer object (like Contains<T>()).
    I don't want to again raise a depression air here. But you should know that. You have the right. All extension methods does not have an overload that has a comparer parameter. But don't worry. You can yourself write the required extension method you need and
    complete the probably incomplete work in .NET.
    Good luck

  • Help with determining PANTONE swatches accurately

    I've recently designed a logo for an event. It's a 3-color design done entirely using process colors. The client would like the PANTONE equivalent of each color, however, and I'm having a lot of trouble figuring this all out (I'm a bit of a prepress newbie).
    First of all, I have a lot of questions about the LAB view vs. CMYK view for spot colors in Illustrator:
    1) The difference between the two is HUGE. In CMYK view, there is less subtlty, but the colors are vibrant and versatile. In LAB view, I can access certain colors I can't otherwise get, but most of the palette is desaturated and muddy. Is it supposed to be this way?
    2) Supposedly, the LAB view for spot colors is relatively new in Illustrator. Considering how far off-base the CMYK versions of each spot swatch is, how was anyone getting work done before this feature was added? I don't understand how I could have even hoped to do spot color work using the CMYK swatches in older versions. They're entirely different colors in many cases. I must be missing something.
    3) Is it accurate to say that, monitor calibration notwithstanding, and all other things being equal, the LAB view of a given spot color is more "accurate" than the CMYK version? If this is the case, the PANTONE uncoated library of solids is incredibly dull and muddy, because that's how it looks in LAB mode. I've been browsing a physical PANTONE book as well, and the colors don't appear to be nearly as bad in real life. My monitor may not be perfect, but I can't believe it's so poorly calibrated that the colors could look THIS different.
    4) When viewing my work in LAB view, one of my colors translates perfectly from CMYK, while another doesn't even come close when attempting to match it with a spot color. In CMYK view, it's reversed-- the first color looks terrible, while the second actually comes pretty close. Which version can I trust? They're total opposites, making the final selection of a single swatch impossible. I'm not sure what to give my client-- if they're using an older version of Illustrator (which is likely), they'll have to see this in CMYK mode, and it will look terrible. Even a PDF I exported doesn't look right in Acrobat. How should I be approaching this?
    As you can see, the seemingly simple task of selecting PANTONE swatches for 3 CMYK colors has turned into a bit of a mess. Any help with these confusions of mine would be hugely appreciated.
    Thanks!

    Aleister,
    my simple advice concerning Spots, is this:
    Buy a swatch book for Pantone Spot Coated and a swatch
    book for CMYK for your Process Coated, as recommended
    by your printing company (here ISO Coated, maybe SWOP
    elsewhere).
    Then compare visually the chosen Spot and a matching
    process color.
    If there is no good match, then you can print only
    by Spot.
    If you've found matching pairs, then you can print
    letterheads by Spots and 4-color brochures by CMYK.
    Personally, I'm using as equivalents for Spots only
    two-color process colors, if e.g. a logo has to be
    designed. This leads to minimal registration errors.
    Another ugly truth is, that even an accurately calibrated
    proof printing system by inkjet cannot reproduce plenty
    Spots sufficiently accurate.
    Meanwhile you may try to investigate all this by a true
    Lab doc for common Spots:
    http://www.fho-emden.de/~hoffmann/swatch16032005.pdf
    Best regards --Gernot Hoffmann

  • I need help with a Object Array

    I am having trouble and this maybe really simple seeing that I am fairly new to java but I have text that is being broken down in to preset part with those parts stored in Object arrays.
    Now I also have a object array inside my object array. Within the second object array are the broken down parts of the text and I want to compare this text with another string so for example this is what I am trying
    boolean found = false;
    for (int i = 0; i < FirstObjectArray.length ;i++)
         Object[] SecondObjectArray = (Object[]) FirstObjectArray;
         if(SecondObjectArray[0] == "string")
              found = true;
              break;
         else
              found = false;
    }Help would be very appreciated.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    astlanda wrote:
    Sure, you're right.
    [public boolean equals(Object obj)|http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html#equals%28java.lang.Object%29]
    sharkura said all the OP needs at the moment. I just wanted to clarify a bit why You don't use == 99.999% of the time with objects, and never with String.
    I have argued elsewhere in these forums that it is inappropriate to tell anyone that you never use == to compare objects. This has not always been accepted. I have, on rare occasions, known experienced developers to blindly compare two objects with equals(), and cite the professor that taught them, 15 years iin the past, that object references are never compared using ==, but always with equals().
    However, the cases where == is appropriate and equals() is not are indeed rare, but not, in my experience, non-existent. In my statement, I probably exaggerated. And String is a case where I can probably accept that you will probably never go wrong with equals(). If the String has been pooled (see String::intern()), you can actually use either. From the javadocs: "*It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.*"
    ¦ {Þ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Help with treemap and other stuff

    hi guys..
    i m new to this forum..
    and this is my first post....so if i act a little naive .....please bare with me.
    and if this is not the correct place to post ..i m sorry for that.
    i have an assignment to submit....i m getting the whole picture ....but not sure how to go about implementing it.
    here it is...
    Write an Object Oriented solution to the problem in Java. The solution is to consist of:
    A TableIndex class
    A TableNavigator Interface
    A data row class ....class that i have to create.
    An application class to use and test your TableIndex class
    The following UML class diagrams show the public methods of the classes. Other methods may be specified. Specify data members, inner classes and interfaces as appropriate.
    TableIndex Class
    The TableIndex class is an index to a collection of objects. The class is to approximate an index to a data table in memory that consists of a number of rows. To control access to the index a current row is defined that specifies the row that can be accessed. To retrieve a row from the index it must be the current row. The get() method is the only method in TableIndex class that retrieves a row from the index. The current row can be changed explicitly using the methods: previous(), next(), first(), last(), gotoBookmark and find(K); and implicitly using insert(K, V), modify(K, V) and remove().
    The TableIndex class is to be implemented using the java API's TreeMap class and must use Generics. The data types K and V below are generic types for the Key and Value (row) respectively. An important aspect of the assignment is using the Java API documentation to understand the TreeMap class.
    guys ....can u plz help with the starting bit ..
    what should be the opening statement of the class...
    public class TableIndex<K , V> .....????
    and what should be the treemap declaration..??
    TreeMap<K , V> indexTable = new TreeMap<K , V>();...???
    i m confused....
    can u plz explain to me..

    hi mate.....didnt quite get you..
    can u plz be a bit more simple in explanation..!!!
    i will post the whole question ..so that anyone reading will understand better....
    Problem Description
    You are to develop an index class and associated classes.
    Requirements
    Write an Object Oriented solution to the problem in Java. The solution is to consist of:
    A TableIndex class
    A TableNavigator Interface
    A data row class
    An application class to use and test your TableIndex class
    The following UML class diagrams show the public methods of the classes. Other methods may be specified. Specify data members, inner classes and interfaces as appropriate.
    TableIndex Class
    The TableIndex class is an index to a collection of objects. The class is to approximate an index to a data table in memory that consists of a number of rows. To control access to the index a current row is defined that specifies the row that can be accessed. To retrieve a row from the index it must be the current row. The get() method is the only method in TableIndex class that retrieves a row from the index. The current row can be changed explicitly using the methods: previous(), next(), first(), last(), gotoBookmark and find(K); and implicitly using insert(K, V), modify(K, V) and remove().
    The TableIndex class is to be implemented using the java API's TreeMap class and must use Generics. The data types K and V below are generic types for the Key and Value (row) respectively. An important aspect of the assignment is using the Java API documentation to understand the TreeMap class.
    TableIndex
    +TableIndex()
    +TableIndex(name: String, comp: Comparator)
    +getName(): String
    +isEmpty(): Boolean
    +size(): Integer
    +hasPrevious(): Boolean
    +hasNext(): Boolean
    +previous()
    +next()
    +first()
    +last()
    +setBookmark(): Boolean
    +clearBookmark()
    +gotoBookmark(): Boolean
    +contains(key: K): Boolean
    +find(key: K): Boolean
    +get(): V
    +insert(key:K, value: V): Boolean
    +modify(value: V): Boolean
    +modify(key: K, value: V): Boolean
    +remove(): V
    +iterator(): Iterator
    +equals(obj2: Object): Boolean
    +toString(): String
    Additional Notes:
    The table index has an order defined by the compareTo method of the key's class or by the compare method specified in the class that implements the Comparator interface.
    getName(): the name of the index, blank by default.
    isEmpty(): returns true if there aren't any rows in the table index
    size(): returns the number of rows in the table index
    hasPrevious(): returns true if there is a row before the current row.
    hasNext(): returns true if there is a row after the current row in sequence.
    previous(): if there is a row before the current row, move to the row and make it the new current row.
    next() if there is a row after the current row, move to the row and make it the new current row.
    first(): if the table isn't empty, move to the first row and make it the new current row.
    last(): if the table isn't empty, move to the last row and make it the new current row.
    setBookmark(): sets a bookmark at the current row. If the bookmark is successfully set the method returns true. The bookmark is cleared if the TableIndex is empty or the row the bookmark was set on is deleted..
    clearBookmark(): sets the bookmark to null, indicating there isn't a bookmark.
    gotoBookmark(): if a bookmark has been set, go to the bookmarked row. If successful the book marked row becomes the current row and the method returns true.
    contains(K): return true if a row with the key specified exists.
    find(K): if a row is found with the specified key, the current row is set to the row found.
    get(): returns the current row. Null is returned if there isn't a current row.
    insert(K, V): inserts a row (value) with the key specified. The key must not be null and must be unique (not already in the TableIndex). The row (value) must not be null. If the row is successfully inserted true is returned, and the row becomes the current row..
    modify(V): change the current row's data to the row (value) specified. The key and the current row key are to remain the same. If successful true is returned.
    modify(K, V): change the current row's key and data to the key and row (value) specified. If successful the changed row becomes the new current row. If successful true is returned. Note: this is more difficult than modify(V).
    remove(): remove the current row. When a row is deleted the next row (if available) becomes the current row, otherwise if there isn't a next row the previous row becomes the current row, otherwise the table is empty therefore the current row is null.
    iterator(): returns an iterator to the rows (values) in the index. The rows are to be retrieved in order. The remove method does not need to be implemented (its method body can be empty)..
    the equals method uses the name, and the rows (values) in order when testing for equality.
    the toString method should return appropriately formatted data members and the rows (values/data) in the index.
    TableNavigator Interface
    «interface»
    TableNavigator
    +isEmpty(): Boolean
    +hasPrevious(): Boolean
    +hasNext(): Boolean
    +previous()
    +next()
    +first()
    +last()
    +contains(key: K): Boolean
    +find(key: K): Boolean
    Additional Notes:
    The TableIndex class implements the TableNavigator Interface.
    The purpose of the above methods is outlined in the TableIndex class.
    Your Data Row Class
    You are to include a class of your own to represent a row of data in the TableIndex. This is not to be a class that was covered in other programming subjects. It does not need to be complex but must include a range of data types. This class will be used to test your TableIndex class. The class should have an appropriate name and deal with something of interest to you.
    Your Application Class
    The application class is to make use of the TableIndex class and your data row class. It is to clearly show how the TableIndex class is used, and in doing so, test it. The class should have an appropriate name. The application class should create two indexes of different key data types. One of the indexes must make use of the Comparator interface to have a key that is in descending order.
    Output
    Output in the test classes/programs is to go to standard out or a text file. There should be no output from the TableIndex class or your data row class. A GUI interface is NOT required. There is no need to input data from the keyboard or file. Use the Unix script command or write output to a text file (etc) to provide example runs of your test programs.

  • Help with triggers

    Hi All,
    i have a few triggers that I need your help with.
    The first trigger (below) is fired when an update is made to a column in an invoices table.
    The question I have is to do with the exception section.
    I want to change the status of the invoice if it fails to F.
    This trigger has already complied fine but I have no test data yet to test against.
    I was unsure of the mutating effect and was wondering if the exception section will cause it to mutate since it is trying to update the status of the current invoice being processed. Pls see below
    create or replace
    TRIGGER POP_STAGE AFTER
    UPDATE OF "EXCHANGED_DATE" ON "INVOICES" FOR EACH ROW
    declare
    -- check if the invoice.mco_transfer_status has been updated to R
    -- if it has then insert records into the relevant tables
    -- Start the Insert based on the update of invoices.mco_transfer_status
    ecode varchar2(100);
    thisproc CONSTANT VARCHAR2(80) := 'trap_errmesg for transfer_status';
    v_value varchar2(150);
    BEGIN
    -- do updates based on update of invoices.transfer_status column
    IF :NEW.TRANSFER_STATUS='R'
    THEN
    -- Insert into E_TICKET_STAGE
    INSERT INTO E_TICKET_STAGE (emco_document_number,exchanged_date,pax_seq,pax_forename,pax_surname,pax_type)
    select :NEW.EMCO_DOCUMENT_NUMBER, :NEW.EXCHANGED_DATE,PX.PAX_SEQ,PX.FORENAME,PX.SURNAME,PX.PAX_TYPE
    FROM PAX PX WHERE PX.BOOKING_ID=:NEW.BOOKING_ID;
    -- Insert into SECTOR_STAGE table
    INSERT INTO SECTOR_STAGE (emco_document_number,ps_id,sector_seq,pax_seq,fare_class,fare_basis,net_fare,tax,gross_fare,
    flight_number,departure_date,dep_airport_code,dest_airport_code)
    SELECT :NEW.EMCO_DOCUMENT_NUMBER, PS.PS_ID,PS.SECTOR_SEQ,PS.PAX_SEQ,PS.FARE_CLASS,PS.FARE_BASIS,PS.NET_FARE,PS.TAX,PS.GROSS_FARE,BS.FLIGHT_NUMBER,BS.DEPARTURE_DATE,
    BS.DEP_AIRPORT_CODE,BS.DEST_AIRPORT_CODE
    FROM PAX_SECTORS PS, BOOKING_SECTORS BS
    WHERE PS.BOOKING_ID=:NEW.BOOKING_ID
    AND BS.BOOKING_ID=PS.BOOKING_ID;
    -- Insert into TAX_STAGE table
    INSERT INTO TAX_STAGE (emco_docUment_number,PS_ID,TAX_SEQ,TAX_CODE,VALUE)
    SELECT :NEW.EMCO_DOCUMENT_NUMBER, pt.PS_ID,TAX_SEQ,TAX_CODE,VALUE
    FROM PAX_TAX pt,PAX_SECTORS ps
    WHERE ps.BOOKING_ID=:OLD.booking_id and pt.PS_ID=ps.PS_ID;
    -- Insert into CHARGES_STAGE table
    insert into CHARGES_STAGE (emco_document_number,CHARGE_TYPE,CHARGE_AMOUNT)
    select :NEW.EMCO_DOCUMENT_NUMBER, CHARGE_TYPE,VALUE FROM INVOICE_DETAILS IND
    WHERE :NEW.INVOICE_ID=IND.INVOICE_ID;
    END IF;
    EXCEPTION
    WHEN OTHERS THEN
    ecode := SQLCODE|| ' '||sqlerrm ;
    dbms_output.put_line(thisproc || ' - ' || ecode);
    v_value := thisproc || ' - ' || ecode;
    -- Insert into DOCUMENT_STATUS_STAGE ANY ERRORS DURING PROCESSING
         insert into DOCUMENT_STATUS_STAGE (EMCO_DOCUMENT_NUMBER, STATUS,STATUS_DATE)
    VALUES (:NEW.EMCO_DOCUMENT_NUMBER,v_value,sysdate);
    update invoices set TRANSFER_STATUS='F' where invoice_id=:old.invoice_id;
    END pop_stage;
    The second trigger (also below) does a check on the payments table to see if the payment_complete date has been set.
    If this has been set then we want to sum all the payments (based on invoice_id). once this sum has been made we want to compare this value to the value of the gross amount on the invoices table for that invoice. if they match (which shows the invoce has been fully paid) then we want to update the paid_date and set to sysdate.
    create or replace
    TRIGGER CHECK_INVOICE_STATUS AFTER
    UPDATE OF "PAYMENT_COMPLETE" ON "PAYMENTS" FOR EACH ROW
    declare
    -- check if all the payments for that invoice have been received (completed)
    -- if they are complete then sum all the payments for that invoice and compare to gross value on invoices
    v_invoice_amount number;
    v_gross_amount number;
    thisproc CONSTANT VARCHAR2(80) := 'trap_errmesg for mco_transfer_status';
    v_value varchar2(150);
    BEGIN
    IF :NEW.PAYMENT_COMPLETE is not null
    THEN
    -- We will sum all the payments for that invoice that have a value in payment_complete
    select sum(amount) into v_invoice_amount from payments where payment_complete is not null
    group by :OLD.INVOICE_ID;
    -- We will also get the gross amount for the invoice to compare to the sum of the payments
    select gross into v_gross_amount from invoices where
    :OLD.INVOICE_ID = invoice_id;
    END IF;
    IF v_invoice_amount = v_gross_amount
    then
    update invoices set paid_date=sysdate;
    end if;
    end CHECK_INVOICE_STATUS;
    Is this trigger sufficent?
    Any tips will be appreciate.
    Thanks

    I didn't really look into your post (rather long) ... anyway, I have 2 words for you "stored procedures".

  • Need help with shared hyperlinks

    I need help understanding the shared hyperlink option when creating hyperlinks in InDesign CS5 (Mac) and how to change a shared hyperlink destination.
    I want to build a document that contains hyperlinks to files on the client’s server. The end use is to make a PDF in which the client can click on a hyperlink and it opens (for example) a Word document or another PDF on their server. When I started the project, I thought I would create shared hyperlinks because a single server document would be referred to by several links scattered through the InDesign document I was building.
    From the Hyperlink palette fly-out menu I chose New Hyperlink, then Link To: File from the dropdown, and I clicked the Shared Hyperlink option, and then OK to close the window. I export the InDesign file as a print PDF, and the hyperlinks work.
    Now I need to change the file paths, because the client moved their files to a new location. When I re-open the hyperlink in the Hyperlink palette by double clicking on it, the Edit Hyperlink window opens but it shows my link as:
    Link To: Shared Destination (rather than File)
    And the destination box underneath shows:
    Document: [my document name]
    Name [the file path I put in]
    However, this link is not editable. I don’t understand why InDesign does this on its own.
    I realize now that it was not necessary to tick the shared option when I built the hyperlink. Is there a way (a script? another method?) that I can remove the shared nature of the hyperlinks so that when I go to edit them they show as links to files (Link to: File, not Link to: Shared Destination) with a live Destination Path box where I can edit the link?
    (If anyone tries to help with a script, note that my document also contains other hyperlinks to internet URLs and emails that I don’t want to disturb.)
    Thanks for your consideration.

    Well. I do feel sort of bait-and-switched, but...
    I want to get the links back to the point where double clicking on the hyperlink name (number) in the Hyperlink palette opens an Edit Hyperlink dialog where the destination is Link to: File and the file path shows up in the File Path box as an editable string. Just the way I made them in the first place.
    It's good that you're comfortable editing the IDML.
    If you compare links made both ways in the IDML, the only distinction between the Shared and the not Shared seems to be the hidden attribute of the <HyperlinkURLDestination/> tag.
    Allegedly you cannot edit this in Javascript (though you could, I suppose, create a new HyperlinkURLDestination with all the same properties and then chang eeach hyperlink to point to it).
    But editing it in the IDML works fine. Open designmap.xml and change the Hidden="false" to Hidden="true". Of course, you only want to do that in the <HyerplinkURLDestination/> tags...
    Something about this seems fishy to me, so you might want to verify it yourself in a single case before you put too much effort in. But I think it's right.

  • Need Help With a Stored Procedure

    Help With a Stored Procedure
    Hi everyone.
    I am quite new relative to creating stored procedures, so I anticipate that whatever help I could get here would be very much helpful.
    Anyway, here is my case:
    I have a table where I need to update some fields with values coming from other tables. The other tables, let us just name as tblRef1, tblRef2 and tblRef3. For clarity, let us name tblToUpdate as my table to update. tblToUpdate has the following fields.
    PlanID
    EmployeeIndicator
    UpdatedBy
    CreatedBy
    tblRef1, tblRef2 and tblRef3 has the following fields:
    UserName
    EmpIndicator
    UserID
    In my stored procedure, I need to perform the following:
    1. Check each row in the tblToUpdate table. Get the CreatedBy value and compare the same to the UserName and UserID field of tblRef1. If no value exists in tblRef1, I then proceed to check if the value exists in the same fields in tblRef2 and tblRef3.
    2. If the value is found, then I would update the EmployeeIndicator field in tblToUpdate with the value found on either tblRef1, tblRef2 or tblRef3.
    I am having some trouble writing the stored procedure to accomplish this. So far, I have written is the following:
    CREATE OR REPLACE PROCEDURE Proc_Upd IS v_rec NUMBER;
    v_plan_no tblToUpdate.PLANID%TYPE;
    v_ref_ind tblToUpdate.EMPLOYEEINDICATOR%TYPE;
    v_update_user tblToUpdate.UPDATEDBY%TYPE;
    v_created_by tblToUpdate.CREATEDBY%TYPE;
    v_correct_ref_ind tblToUpdate.EMPLOYEEIDICATOR%TYPE;
    CURSOR cur_plan IS SELECT PlanID, EmployeeIndicator, UPPER(UpdatedBy), UPPER(CreatedBy) FROM tblToUpdate;
    BEGIN
    Open cur_plan;
         LOOP
         FETCH cur_plan INTO v_plan_no, v_ref_ind, v_update_user, v_created_by;
              EXIT WHEN cur_plan%NOTFOUND;
              BEGIN
              -- Check if v_created_by has value.
                   IF v_created_by IS NOT NULL THEN
                   -- Get the EmpIndicator from the tblRef1, tblRef2 or tblRef3 based on CreatedBy
                   SELECT UPPER(EmpIndicator)
                        INTO v_correct_ref_ind
                        FROM tblRef1
                        WHERE UPPER(USERNAME) = v_created_by
                        OR UPPER(USERID) = v_created_by;
                        IF v_correct_ref_ind IS NOT NULL THEN
                        -- Update the Reference Indicator Field in the table TRP_BUSPLAN_HDR_T.
                             UPDATE TRP_BUSPLAN_HDR_T SET ref_ind = v_correct_ref_ind WHERE plan_no = v_plan_no;
                        ELSIF
                        -- Check the Other tables here????
                        END IF;
                   ELSIF v_created_by IS NULL THEN
                   -- Get the EmpIndicator based on the UpdatedBy
                        SELECT UPPER(EmpIndicator)
                        INTO v_correct_ref_ind
                        FROM tblRef1
                        WHERE UPPER(USERNAME) = v_update_user
                        OR UPPER(USERID) = v_created_by;
                        IF v_correct_ref_ind IS NOT NULL THEN
                        -- Update the Reference Indicator Field in the table TRP_BUSPLAN_HDR_T.
                             UPDATE TRP_BUSPLAN_HDR_T SET ref_ind = v_correct_ref_ind WHERE plan_no = v_plan_no;
                        ELSIF
                        -- Check the Other tables here????
                        END IF;
                   END IF;
              END;
         END LOOP;
         CLOSE cur_plan;
         COMMIT;
    END
    Please take note that the values in the column tblToUpdate.UpdatedBy or tblToUpdate.CreatedBy could match either the UserName or the UserID of the table tblRef1, tblRef2, or tblRef3.
    Kindly provide more insight. When I try to execute the procedure above, I get a DATA NOT FOUND ERROR.
    Thanks.

    Ah, ok; I got the updates the wrong way round then.
    BluShadow's single update sounds like what you need then.
    I also suggest you read this AskTom link to help you see why you should choose to write DML statements before choosing to write cursor + loops.
    In general, when you're being asked to update / insert / delete rows into a table or several tables, your first reaction should be: "Can I do this in SQL?" If you can, then putting it into a stored procedure is usually just a case of putting the sql statement inside the procedure header/footers - can't really get much more simple than that! *{;-)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Need help with calculator project for an assignment...

    Hi all, I please need help with my calculator project that I have to do for an assignment.
    Here is the project's specifications that I need to do"
    """Create a console calculator applicaion that:
    * Takes one command line argument: your name and surname. When the
    program starts, display the date and time with a welcome message for the
    user.
    * Display all the available options to the user. Your calculator must include
    the arithmetic operations as well as at least five scientific operations of the
    Math class.
    -Your program must also have the ability to round a number and
    truncate it.
    -When you multiply by 2, you should not use the '*' operator to perform the
    operation.
    -Your program must also be able to reverse the sign of a number.
    * Include sufficient error checking in your program to ensure that the user
    only enters valid input. Make use of the String; Character, and other
    wrapper classes to help you.
    * Your program must be able to do conversions between decimal, octal and
    hex numbers.
    * Make use of a menu. You should give the user the option to end the
    program when entering a certain option.
    * When the program exits, display a message for the user, stating the
    current time, and calculate and display how long the user used your
    program.
    * Make use of helper classes where possible.
    * Use the SDK to run your program."""
    When the program starts, it asks the user for his/her name and surname. I got the program to ask the user again and again for his/her name and surname
    when he/she doesn't insert anything or just press 'enter', but if the user enters a number for the name and surname part, the program continues.
    Now my question is this: How can I restrict the user to only enter 'letters' (and spaces of course) but allow NO numbers for his/her surname??
    Here is the programs code that I've written so far:
    {code}
    import java.io.*;
    import java.util.*;
    import java.text.*;
    public class Project {
         private static String nameSurname = "";     
         private static String num1 = null;
         private static String num2 = null;
         private static String choice1 = null;
         private static double answer = 0;
         private static String more;
         public double Add() {
              answer = (Double.parseDouble(num1) + Double.parseDouble(num2));
              return answer;
         public double Subtract() {
              answer = (Double.parseDouble(num1) - Double.parseDouble(num2));
              return answer;
         public double Multiply() {
              answer = (Double.parseDouble(num1) * Double.parseDouble(num2));
              return answer;
         public double Divide() {
              answer = (Double.parseDouble(num1) / Double.parseDouble(num2));
              return answer;
         public double Modulus() {
              answer = (Double.parseDouble(num1) % Double.parseDouble(num2));
              return answer;
         public double maximumValue() {
              answer = (Math.max(Double.parseDouble(num1), Double.parseDouble(num2)));
              return answer;
         public double minimumValue() {
              answer = (Math.min(Double.parseDouble(num1), Double.parseDouble(num2)));
              return answer;
         public double absoluteNumber1() {
              answer = (Math.abs(Double.parseDouble(num1)));
              return answer;
         public double absoluteNumber2() {
              answer = (Math.abs(Double.parseDouble(num2)));
              return answer;
         public double Squareroot1() {
              answer = (Math.sqrt(Double.parseDouble(num1)));
              return answer;
         public double Squareroot2() {
              answer = (Math.sqrt(Double.parseDouble(num2)));
              return answer;
         public static String octalEquivalent1() {
              int iNum1 = Integer.parseInt(num1);
    String octal1 = Integer.toOctalString(iNum1);
    return octal1;
         public static String octalEquivalent2() {
              int iNum2 = Integer.parseInt(num2);
              String octal2 = Integer.toOctalString(iNum2);
              return octal2;
         public static String hexadecimalEquivalent1() {
              int iNum1 = Integer.parseInt(num1);
              String hex1 = Integer.toHexString(iNum1);
              return hex1;
         public static String hexadecimalEquivalent2() {
              int iNum2 = Integer.parseInt(num2);
              String hex2 = Integer.toHexString(iNum2);
              return hex2;
         public double Round1() {
              answer = Math.round(Double.parseDouble(num1));
              return answer;
         public double Round2() {
              answer = Math.round(Double.parseDouble(num2));
              return answer;
              SimpleDateFormat format1 = new SimpleDateFormat("EEEE, dd MMMM yyyy");
         Date now = new Date();
         SimpleDateFormat format2 = new SimpleDateFormat("hh:mm a");
         static Date timeIn = new Date();
         public static long programRuntime() {
              Date timeInD = timeIn;
              long timeOutD = System.currentTimeMillis();
              long msec = timeOutD - timeInD.getTime();
              float timeHours = msec / 1000;
                   return (long) timeHours;
         DecimalFormat decimals = new DecimalFormat("#0.00");
         public String insertNameAndSurname() throws IOException{
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        while (nameSurname == null || nameSurname.length() == 0) {
                             for (int i = 0; i < nameSurname.length(); i++) {
                             if ((nameSurname.charAt(i) > 'a') && (nameSurname.charAt(i) < 'Z')){
                                       inputCorrect = true;
                        else{
                        inputCorrect = false;
                        break;
                        try {
                             BufferedReader inStream = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("Please enter your name and surname: ");
                             nameSurname = inStream.readLine();
                             inputCorrect = true;
                        }catch (IOException ex) {
                             System.out.println("You did not enter your name and surname, " + nameSurname + " is not a name, please enter your name and surname :");
                             inputCorrect = false;
                        System.out.println("\nA warm welcome " + nameSurname + " ,todays date is: " + format1.format(now));
                        System.out.println("and the time is now exactly " + format2.format(timeIn) + ".");
                        return nameSurname;
              public String inputNumber1() throws IOException {
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        try {
                             BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("\nPlease enter a number you want to do a calculation with and hit <ENTER>: ");
                             num1 = br.readLine();
                             double number1 = Double.parseDouble(num1);
                             System.out.println("\nThe number you have entered is: " + number1);
                             inputCorrect = true;
                        } catch (NumberFormatException nfe) {
                             System.out.println("\nYou did not enter a valid number: " + "\""+ num1 + "\" is not a number!!");
                             inputCorrect = false;
                        return num1;
         public String calculatorChoice() throws IOException {
              System.out.println("Please select an option of what you would like to do with this number from the menu below and hit <ENTER>: ");
              System.out.println("\n*********************************************");
              System.out.println("---------------------------------------------");
              System.out.println("Please select an option from the list below: ");
              System.out.println("---------------------------------------------");
              System.out.println("1 - Add");
              System.out.println("2 - Subtract");
              System.out.println("3 - Multiply");
              System.out.println("4 - Divide (remainder included)");
              System.out.println("5 - Maximum and minimum value of two numbers");
              System.out.println("6 - Squareroot");
              System.out.println("7 - Absolute value of numbers");
              System.out.println("8 - Octal and Hexadecimal equivalent of numbers");
              System.out.println("9 - Round numbers");
              System.out.println("0 - Exit program");
              System.out.println("**********************************************");
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        try {
                             BufferedReader inStream = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("Please enter your option and hit <ENTER>: ");
                             choice1 = inStream.readLine();
                             int c1 = Integer.parseInt(choice1);
                             System.out.println("\nYou have entered choice number: " + c1);
                             inputCorrect = true;
                        } catch (NumberFormatException nfe) {
                             System.out.println("You did not enter a valid choice number: " + "\""+ choice1 + "\" is not in the list!!");
                             inputCorrect = false;
                        return choice1;
         public String inputNumber2() throws IOException {
              boolean inputCorrect = false;
                   while (inputCorrect == false) {
                        try {
                             BufferedReader br2 = new BufferedReader (new InputStreamReader(System.in));
                             System.out.print("\nPlease enter another number you want to do the calculation with and hit <ENTER>: ");
                             num2 = br2.readLine();
                             double n2 = Double.parseDouble(num2);
                             System.out.println("\nThe second number you have entered is: " + n2);
                             System.out.println("\nYour numbers are: " + num1 + " and " + num2);
                             inputCorrect = true;
                        } catch (NumberFormatException nfe) {
                             System.out.println("You did not enter a valid number: " + "\""+ num2 + "\" is not a number!!");
                             inputCorrect = false;
                        return num2;
         public int Calculator() {
              int choice2 = (int) Double.parseDouble(choice1);
              switch (choice2) {
                        case 1 :
                             Add();
                             System.out.print("The answer of " + num1 + " + " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 2 :
                             Subtract();
                             System.out.print("The answer of " + num1 + " - " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 3 :
                             Multiply();
                             System.out.print("The answer of " + num1 + " * " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 4 :
                             Divide();
                             System.out.print("The answer of " + num1 + " / " + num2 + " is: " + decimals.format(answer));
                             Modulus();
                             System.out.print(" and the remainder is " + decimals.format(answer));
                             break;
                        case 5 :
                             maximumValue();
                             System.out.println("The maximum number between the numbers " + num1 + " and " + num2 + " is: " + decimals.format(answer));
                             minimumValue();
                             System.out.println("The minimum number between the numbers " + num1 + " and " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 6 :
                             Squareroot1();
                             System.out.println("The squareroot of value " + num1 + " is: " + decimals.format(answer));
                             Squareroot2();
                             System.out.println("The squareroot of value " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 7 :
                             absoluteNumber1();
                             System.out.println("The absolute number of " + num1 + " is: " + decimals.format(answer));
                             absoluteNumber2();
                             System.out.println("The absolute number of " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 8 :
                             octalEquivalent1();
                             System.out.println("The octal equivalent of " + num1 + " is: " + octalEquivalent1());
                             octalEquivalent2();
                             System.out.println("The octal equivalent of " + num2 + " is: " + octalEquivalent2());
                             hexadecimalEquivalent1();
                             System.out.println("\nThe hexadecimal equivalent of " + num1 + " is: " + hexadecimalEquivalent1());
                             hexadecimalEquivalent2();
                             System.out.println("The hexadecimal equivalent of " + num2 + " is: " + hexadecimalEquivalent2());
                             break;
                        case 9 :
                             Round1();
                             System.out.println("The rounded number of " + num1 + " is: " + decimals.format(answer));
                             Round2();
                             System.out.println("The rounded number of " + num2 + " is: " + decimals.format(answer));
                             break;
                        case 0 :
                             if (choice2 == 0) {
                                  System.exit(1);
                             break;
                   return choice2;
              public String anotherCalculation() throws IOException {
                   boolean inputCorrect = false;
                   while (inputCorrect == false) {
                             try {                              
                                  BufferedReader br3 = new BufferedReader (new InputStreamReader(System.in));
                                  System.out.print("\nWould you like to do another calculation? Y/N ");
                                  more = br3.readLine();
                                  String s1 = "y";
                                  String s2 = "Y";
                                  if (more.equals(s1) || more.equals(s2)) {
                                       inputCorrect = true;
                                       while (inputCorrect = true){
                                            inputNumber1();
                                            System.out.println("");
                                            calculatorChoice();
                                            System.out.println("");
                                            inputNumber2();
                                            System.out.println("");
                                            Calculator();
                                            System.out.println("");
                                            anotherCalculation();
                                            System.out.println("");
                                            inputCorrect = true;
                                  } else {
                                       System.out.println("\n" + nameSurname + " thank you for using this program, you have used this program for: " + decimals.format(programRuntime()) + " seconds");
                                       System.out.println("the program will now exit, Goodbye.");
                                       System.exit(0);
                             } catch (IOException ex){
                                  System.out.println("You did not enter a valid answer: " + "\""+ more + "\" is not in the list!!");
                                  inputCorrect = false;
              return more;
         public static void main(String[] args) throws IOException {
              Project p1 = new Project();
              p1.insertNameAndSurname();
              System.out.println("");
              p1.inputNumber1();
              System.out.println("");
              p1.calculatorChoice();
              System.out.println("");
              p1.inputNumber2();
              System.out.println("");
              p1.Calculator();
                   System.out.println("");
                   p1.anotherCalculation();
                   System.out.println("");
    {code}
    *Can you please run my code for yourself and have a look at how this program is constructed*
    *and give me ANY feedback on how I can better this code(program) or if I've done anything wrong from your point of view.*
    Your help will be much appreciated.
    Thanks in advance

    Smirre wrote:
    Now my question is this: How can I restrict the user to only enter 'letters' (and spaces of course) but allow NO numbers for his/her surname??You cannot restrict the user. It is a sad fact in programming that the worst bug always sits in front of the Computer.
    What you could do is checking the input string for numbers. If it contains numbers, just reprompt for the Name.
    AND you might want to ask yourself why the heck a calculator needs to know the users Name.

  • Please help with a new dual purpose PC build

    Hi everybody in AdobeLand! 
    I've been reading various boards and hardware sites and have started piecing together a dual purpose computer system.  It will be used for both video editing (of pre-shot hacked, high bitrate I-Frame Panasonic GH2 DSLR and camcorder footage using the AVCHD codec @ 1080p 24 and 30 fps) and webcasting/streaming purposes.  I would build two computers for each task, but it's just not in the budget right now.  I'm already stretching things as is. 
    I'm still not sure if I will be using Adobe Premiere or Sony Vegas Pro 12 yet, though it seems like they organize their folders and file structures about the same.  Adobe's cloud service has me a bit scared off right now.  This new scheme feels like they have their hand purpetually in your wallet, which does not sit well with me.  I may still go with Vegas 12 just to avoid that hassle right now.  Help guide me here, experts!  Telestream's Wirecast is being used for multi-cam switching and graphics for live and pre-recorded material being compressed and streamed. 
    Back on topic:
    Here's the build as of right now...
    OS: Windows 7 64-Bit Professional (Windows 8 absolutely sucks!)
    CPU: Intel i7-4930k 6-Core Ivy Bridge (own)
    Motherboard: Asus P9X79 Pro (own)
    Memory: Crucial Ballistix 1.35v Sport DDR3L @ 32 GB (own)
    GPU:  EVGA GTX 770 FTW w/ 4 GB (will buy another HD monitor at a later date, hence the 4GB memory)
    Case:  Fractal Design XL R2 Full Tower
    CPU Cooling:  Noctua NH-D14 w/ SE2011 Bracket
    PSU: Corsair RM1000 Quiet Series / 80 Plus Gold / 1000 Watts
    Monitor: Dell U2412M Ultrasharp 24 inch / 1920x1200
    Optical Drive: LG Blu-ray Writer
    Keyboard: Microsoft 4000 Ergonomic
    HDMI capture cards: Blackmagic Designs Decklink Mini (x2)
    Storage:
    I bought two Samsung 840 Pro SSD drives:  one 128 GB and one 256 GB
    Thinking about possibly 2 (maybe 3-4 if I really stretch) Seagate ST3000DM001 3TB HDD's.
    I could sure use your help with any advise on arranging the storage to get the best bang vs. buck in speed and storage utilization (Wirecast can be setup to record live webcast sessions at 720p or 1080p in compressed files... probably no more than 120 minute webcasts... so that comes into play as well).  Just don't have the funds for an uber-expensive RAID controller card right now.
    Any opinions overall on the parts for the current build?  I still have time to send back and exchange anything already purchased.
    Thank you for your time and consideration.   

    What do you not understand from:
    With all the reading and writing going on, on the boot disk, it is understandable you need a (number of) dedicated disk(s) for video editing, especially with the bandwidths required when the clip duration is short and the number of tracks exceeds one and uses a codec more complex than DV. The kind of files used during editing are, in order of their need for speed:
    Media cache & Media cache database files, created on importing media into a project. They contain indexed, conformed audio and peak files for waveform display.
    Typically small files, but lots of them, so in the end they still occupy lots of disk space.
    Preview (rendered) files, created when the time-line is rendered for preview purposes, the red bar turned to green. Read all the time when previewing the time-line.
    Project files, including project auto-save files, that are constantly being read and saved as auto-save files and written when saving your edits.
    Media files, the original video material ingested from tape or card based cameras. Typically long files, only used for reading, since PR is a non-destructive editor.
    Export files, created when the time-line is exported to its final delivery format. These files are typically only written once and often vary in size from several hundred KB to tens of GB.
    When you are doubting which category of files to put on which kind of disk, especially when using both SSD's and HDD's, keep in mind that the speed advantage of SSD's over HDD's is most noteworthy with the Media cache & Media cache database. These files are frequently accessed, are small and there are many, so reducing latency and seek times and increasing transfer rates pays off by putting these on a SSD, rather than on a HDD, even if it is a raid0. Export files can go to the slowest volume on your system, since you only export once. To help you decide, I have added priority rank-numbers for speed, with 1 for the fastest volume and 5 for the least speed-demanding category.
    and
    Well, in the benchmark tests we have not seen any noticeable difference between SSD and HDD in terms of performance, but logic dictates that there should be a small difference in performance when the volume used for media cache is a SSD, because of the much faster access time and lower latency compared to a conventional disk. If it is noticeable, it is specifically on this volume with the media cache and media cache database, due to the large amount of small files that need to be accessed and written. This argument does not apply to the media volume with a limited number of files, that are very big in size.

  • Need help with my usecase based on transient ViewObject

    I am using 11.1.1.4.0 Jdev version. I need help with my usecase.Been trying it for 2 days but couldn't figure out the issue.
    I have a transientVO . In this VO Rows will be populated programmatically. CountryId is an attribute of this VO. I have created a viewAccessor "CountriesVA" from Country VO of HR schema.
    I have a LOV for the countryId which is based on this VA ,getting countries from CountryTable.
    This is the model part which works fine.
    Before the page load i have called  a method to create a row for this transientVO.Once the row is created i can see the SOC in my page which i have created as below.
    Now i want to insert a row in the transientVO if user selects a country and restrict duplicate entry . (As One row is already created 1st time there will be no rows created.after that rows will be inserted)
    The issue is :: Suppose there are 2 countries. A & B .When user does the following actions :
    Insert A . Done //as 1st entry
    Insert B . Done //as 1st time entry
    Insert A . duplicate not inserted
    Insert B . getting inserted // the bug.
    <af:selectOneChoice value="#{bindings.CountryId.inputValue}"
                            label="#{bindings.CountryId.label}"
                            required="#{bindings.CountryId.hints.mandatory}"
                            shortDesc="#{bindings.CountryId.hints.tooltip}" id="soc1"
                            immediate="true" autoSubmit="true"
                            valueChangeListener="#{pageFlowScope.managedBean.countryIdVC}">
        public void countryIdVC(ValueChangeEvent valueChangeEvent) {
            // Add event code here...
            String oldValue=null;
              setEL("#{bindings.CountryId.inputValue}", valueChangeEvent.getOldValue());
              if(evaluateEL("#{bindings.CountryId.attributeValue}")!=null)
             oldValue =evaluateEL("#{bindings.CountryId.attributeValue}").toString();
                    setEL("#{bindings.CountryId.inputValue}", valueChangeEvent.getNewValue());
            String newValue=evaluateEL("#{bindings.CountryId.attributeValue}").toString();
            BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
             DCIteratorBinding dciter = (DCIteratorBinding) bindings.get("ViewObj1Iterator");
             //access the underlying RowSetIterator
             RowSetIterator rsi = dciter.getRowSetIterator();
          boolean duplicate=true;
          if(oldValue!=null){
                    rsi.getCurrentRow().setAttribute("CountryId", oldValue);
        //  Row row= rsi.findByKey(new Key(new Object[] { newValue}), 1)[0];
          Key key =new Key(new Object[] { newValue});
          Row row=rsi.getRow(key);
          if(row==null){
          System.err.println(duplicate);
            duplicate=false;
          }else{
            rsi.setCurrentRow(row);
             if(!duplicate){
             //get handle to the last row
             Row lastRow = rsi.last();
             //obtain the index of the last row
             int lastRowIndex = rsi.getRangeIndexOf(lastRow);
             //create a new row
             Row newRow = rsi.createRow();
             newRow.setAttribute("CountryId", newValue);
             //initialize the row
             newRow.setNewRowState(Row.STATUS_INITIALIZED);
             //add row to last index + 1 so it becomes last in the range set
             rsi.insertRowAtRangeIndex(lastRowIndex +1, newRow);
             //make row the current row so it is displayed correctly
             rsi.setCurrentRow(newRow);

    I read the reply from Andrejus Baranovskis and thought of studying and implementing that in my useCase.Well it worked . I implemented the same Logic but rowIteration was done in AppModule.
    Con-Fusion, Bugs, Facts &amp;amp; Workarounds: Iterating through View Object RowIterator Bug.(NOT ADF BUG, Development B…
    http://docs.oracle.com/cd/E15523_01/web.1111/b31974/bcservices.htm#sm0206
    9.7.6 What You May Need to Know About Programmatic Row Set Iteration
    The problem is solved ,the above links helped me solve the problem.
    what i did is i have created a method in appmodule to iterate rows and all the method y operation bindings and my logic works fine ....
    MY Advice to all Adf developers ,though i am not an expert but i can assure you to follow the above process for rowIteration.If you use the  iterator binding in the manage bean to navigate the rows u'll face issues which are unexpected.
    In AppModule :::::
        public boolean createRow(String oldValue,String newValue){
         System.err.println(oldValue+""+newValue);
          ViewObjectImpl vo=getViewObj1();
          boolean duplicate=false;
          if(oldValue!=null){
          RowSetIterator iter = vo.createRowSetIterator(null);
          System.err.println("iterating rows ");
             while (iter.hasNext()) {
                 Row r = iter.next();
                 System.err.println(iter.getRangeIndexOf(r)+" row is "+r.getAttribute("CountryId"));
                 if(r.getAttribute("CountryId").toString().equals(newValue)){
                     duplicate=true;
                     break;
                 // Do something with the current row.
             // close secondary row set iterator
             iter.closeRowSetIterator();
          return duplicate;
    In ManageBean :::::
        public void countryIdVC(ValueChangeEvent valueChangeEvent) {
            // Add event code here...
            String oldValue=null;
           System.err.println("Old Value"+valueChangeEvent.getOldValue());
              setEL("#{bindings.CountryId.inputValue}", valueChangeEvent.getOldValue());
              if(evaluateEL("#{bindings.CountryId.attributeValue}")!=null)
             oldValue =evaluateEL("#{bindings.CountryId.attributeValue}").toString();
                    setEL("#{bindings.CountryId.inputValue}", valueChangeEvent.getNewValue());
            String newValue=evaluateEL("#{bindings.CountryId.attributeValue}").toString();
            BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();
             //access the name of the iterator the table is bound to. Its "allDepartmentsIterator"
             //in this sample
             DCIteratorBinding dciter = (DCIteratorBinding) bindings.get("ViewObj1Iterator");
             //access the underlying RowSetIterator
             RowSetIterator rsi = dciter.getRowSetIterator();
             if(oldValue!=null){
                          rsi.getCurrentRow().setAttribute("CountryId", oldValue);
               OperationBinding operation = bindings.getOperationBinding("createRow");
               operation.getParamsMap().put("oldValue", oldValue);
               operation.getParamsMap().put("newValue", newValue);
          if(!(Boolean)operation.execute()){
          //get handle to the last row
          Row lastRow = rsi.last();
          //obtain the index of the last row
          int lastRowIndex = rsi.getRangeIndexOf(lastRow);
          //create a new row
          Row newRow = rsi.createRow();
          newRow.setAttribute("CountryId", newValue);
          //initialize the row
          newRow.setNewRowState(Row.STATUS_INITIALIZED);
          //add row to last index + 1 so it becomes last in the range set
          System.err.println("Inserting row at index "+lastRowIndex+1);
          rsi.insertRowAtRangeIndex(lastRowIndex +1, newRow);
          //make row the current row so it is displayed correctly
          rsi.setCurrentRow(newRow);
          else{
            System.err.println("Data found So not inserting,only setting current Row");
          Key key =new Key(new Object[] { newValue});
            rsi.setCurrentRow(rsi.getRow(key));

  • Need help with my graphic calculator!!!

    Hello everybody!! I need help with my little program I made.... The problem is that I am unable to use to calculate but it is possible to compile the code!! What should I do?? Thanks in advance.
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    class Aritmetik extends JFrame implements ActionListener{
         private JLabel l1 = new JLabel("Tal1: ", JLabel.LEFT);
         private JLabel l2 = new JLabel("Tal2: ", JLabel.LEFT);
         private JLabel l3 = new JLabel("Resultat",JLabel.LEFT);
         private JLabel l4 = new JLabel(" ", JLabel.RIGHT);
         private JTextField t1 = new JTextField(" ",10);
         private JTextField t2 = new JTextField(" ",10);
         private JButton b1 = new JButton("+");
         private JButton b2 = new JButton("-");
         private JButton b3 = new JButton("*");
         private JButton b4 = new JButton("/");
         public Aritmetik(){
              Container v = getContentPane();
              v.setLayout(new GridLayout(5,2));
              v.add(l1);
              v.add(t1);
              v.add(l2);
              v.add(t2);
              v.add(b1);
              v.add(b2);
              v.add(b3);
              v.add(b4);
              v.add(l3);
              v.add(l4);
              b1.addActionListener(this);
              b2.addActionListener(this);
              b3.addActionListener(this);
              b4.addActionListener(this);
              pack();
              setVisible(true);
              setDefaultCloseOperation(EXIT_ON_CLOSE);
         public void actionPerformed(ActionEvent e){
              int tal1 = Integer.parseInt(t1.getText());
              int tal2 = Integer.parseInt(t2.getText());
                   if(e.getSource() == b1){
              if(t1.getText().equals("") || t2.getText().equals(""))
                                       JOptionPane.showMessageDialog(null, "Mata in tal!");
                   else{
                        l3.setText("Resultat ");
                   l4.setText(" " + (tal1+tal2));
                   else if(e.getSource() == b2){
                        int sub = tal1-tal2;
                        l4.setText(" " + (sub));
                   else if(e.getSource() == b3){
                        int multi = tal1*tal2;
                        l4.setText(" " + (multi));
                   else if(e.getSource() == b4){
                        int div = tal1/tal2;
                        l4.setText(" " + (div));
                   public static void main(String[] arg){
                   Aritmetik A =new Aritmetik();

    Here is your problem:
    public void actionPerformed(ActionEvent e){
      int tal1 = Integer.parseInt(t1.getText().trim());  // add the trim()
      int tal2 = Integer.parseInt(t2.getText().trim());  // add the trim()
      if(e.getSource() == b1){
        if(t1.getText().equals("") || t2.getText().equals(""))
          JOptionPane.showMessageDialog(null, "Mata in tal!");
        else{
          l3.setText("Resultat ");
          l4.setText(" " + (tal1+tal2));
      }... Better ...
    public void actionPerformed(ActionEvent e)  throws NumberFormatException {
      String tala = t1.getText().trim();
      String talb = t2.getText().trim();
      if ( tala == null  ||  "".equals(tala)  ||  talb == null  ||  "".equals(talb) ) {
        JOptionPane.showMessageDialog(null, "Mata in tal!");
        return();
      int tal1 = Integer.parseInt(tala);
      int tal2 = Integer.parseInt(talb);
      if(e.getSource() == b1){
        l3.setText("Resultat ");
        l4.setText(" " + (tal1+tal2));
      else if(e.getSource() == b2){
        int sub = tal1-tal2;
        l4.setText(" " + (sub));
      else if(e.getSource() == b3){
        int multi = tal1*tal2;
        l4.setText(" " + (multi));
      else if(e.getSource() == b4){
        int div = tal1/tal2;
        l4.setText(" " + (div));
    }Message was edited by:
    abillconsl

Maybe you are looking for

  • System has slowed so much i can't use it!  what to do?

    my iBook G4 (800mhz, 512[640]RAM) has been moving so slowly the last few days to the point that i can't use it anymore. simple tasks like opening the finder or iTunes sends the rainbow pinwheel spinning, even if the applications are opening by themse

  • How to find the Names of Most costly Views or Most Time consuming views

    Hi All, I had a database consisting of almost 200 views,as a part of Optimization process i want to find out the most costlier views.How to do that.Actually i want the names of the VIEWS,so that i can optimize that.Can any one help me out? I had one

  • Non display of  OPEN ITEM GL for MISGL in FAGLB03

    For Open Item GL  where shown balance RS.52 Lacs, But line item hown Zero amount of the same. have given proper  Inputs in FAGLB03 like GL Account Number,Company Code, Fiscal Year and Ledger. can you please help me out on this.. Thanks and Regards, S

  • Video Performance On 2009 Mini Before And After Snow Leopard

    When I ran Leopard on my 2009 Mac Mini, I could watch full screen video on one of my two monitors while surfing the web on the other. It wasn't flawless, I could see some latency issues, but it was entirely tolerable. With Snow Leopard, the full scre

  • How to save QT files?

    I can move iTunes files to QT where they sound much better. How can I save these files in the QT format instead of having to open iTunes and drag and drop every time I want to listen to them? Is there some app that I could use to store them and have