Cody B
Cody B

Reputation: 153

How to obtain and utilize next String in Java

I have been fighting with this for quite some time and have found a couple useful resources, yet the problem persists.

Here's my code:

import java.util.Scanner;

public class Stocks {

public static void main(String [] args){

    // value of stock at beginning of year and end of year.
    final int beginningStock = 10;
    final int endStock = 20;


    // value of stocks by quarter; there are three quarters. 
    int firstQuarter;
    int secondQuarter;
    int thirdQuarter;
    String broker;
    String Buy;

    firstQuarter = 10;
    secondQuarter = 30;
    thirdQuarter = 20;

    //Tell client the maximum value/price of the stock during the year.     
    System.out.println("The maximum price of a stock share in the year is: $" + secondQuarter + ".");

    // Tell client the minimum value/price of the stock during the year.
    System.out.println("The minimum price of a stock share in the year is: $" + firstQuarter + ".");

    //Ask broker if you want to buy or sell
    Scanner input = new Scanner(System.in);

    System.out.println("Would you like to Buy or Sell stocks? Please use Buy or Sell commands.");
    broker = input.next("");

    if (broker == "Buy"){
        //Calculate percentage increase of stock through year if the broker wants the client to buy.
        //The values are relative to the start of the year.
        double percentIncrease;

        percentIncrease = (double)(endStock - beginningStock)/(beginningStock);

        //Convert decimal to percentage and tell client percentage increase relative to beginning of year.
        System.out.println("The percentage increase of the stock through the year, relative to beginning of year, is: %"+ ((int)(percentIncrease*100+.5))+ "." );


    }

    else if (broker == "Sell"){
        //Calculate change relative to end of year
        double endIncrease;

        endIncrease = (double)(endStock - beginningStock)/(endStock);

        //Convert decimal to percentage and tell client percentage increase relative to end of year.
        System.out.println("The percentage increase of the stock through the year, relative to end of year, is: %"+ ((int)(endIncrease*100))+ "." );

    }

    }
}

The issue I am having is around line 29:

//Ask broker if you want to buy or sell
    Scanner input = new Scanner(System.in);

    System.out.println("Would you like to Buy or Sell stocks? Please use Buy or Sell commands.");
    broker = input.next("");

    if (broker == "Buy"){
        //Calculate percentage increase of stock through year if the broker wants the client to buy.
        //The values are relative to the start of the year.
        double percentIncrease;

        percentIncrease = (double)(endStock - beginningStock)/(beginningStock);

        //Convert decimal to percentage and tell client percentage increase relative to beginning of year.
        System.out.println("The percentage increase of the stock through the year, relative to beginning of year, is: %"+ ((int)(percentIncrease*100+.5))+ "." );

It will take the String but will not use it. I don't know what I am doing wrong. Forgive me this is my first post on here.

Upvotes: 1

Views: 2675

Answers (4)

Tiago
Tiago

Reputation: 3151

As others said, you should use equals() to compare instances of String.

You have another problem in your code. You're using Scanner´s method next(String pattern), which will return a String if it matches the passed pattern. Since you're passing an empty Stringas the pattern it will raise an exception. You should be using next() instead.

Upvotes: 1

ruakh
ruakh

Reputation: 183301

The problem is that == tests for reference-equality rather than value-equality; that is, it checks that the two sides are the same object, rather than equivalent objects. You need to change this:

    if (broker == "Buy"){

to this:

    if (broker.equals("Buy")){

Upvotes: 2

unholysampler
unholysampler

Reputation: 17321

Use equals() instead of == to compare strings.

== is the identity comparison operator, not equivalence.

Upvotes: 1

kosa
kosa

Reputation: 66637

"Buy".equals(broker) should be condition check

In Java string comparison should be .equals not ==

Upvotes: 0

Related Questions