aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hunteman <michael@michaelted.xyz>2022-07-22 17:20:47 -0500
committerMichael Hunteman <michael@michaelted.xyz>2022-07-22 17:20:47 -0500
commitb45abeef98474538749201c27c76cb7aab29b70a (patch)
tree698218bfa825e171fefafe6bcb0b287d659b4d50
parent6d8c7f5add72e0921bb00053c4910538810c3f16 (diff)
Fix coding style issues
-rw-r--r--picker.java254
1 files changed, 126 insertions, 128 deletions
diff --git a/picker.java b/picker.java
index 2a31355..6b49d2c 100644
--- a/picker.java
+++ b/picker.java
@@ -1,132 +1,130 @@
-import java.io.*;
import java.lang.*;
import java.util.*;
class Backpointer {
static Stock NOTHING = new Stock(1, 0, "");
- int previousValue, totalValue;
+ int totalValue;
Stock stock;
public Backpointer(int previousValue, Stock stock) {
- this.stock = stock;
- this.totalValue = previousValue + stock.value;
+ this.stock = stock;
+ this.totalValue = previousValue + stock.value;
}
- public static Backpointer chooseBackpointer(Stock stocks[],
- ArrayList<Backpointer> backpointers) {
-
- int currentPrice = backpointers.size();
- Backpointer best =
- new Backpointer(backpointers.get(currentPrice - 1).totalValue, NOTHING);
-
- for (int i = 0; i < stocks.length; i++) {
- Stock stock = stocks[i];
- int previousPrice = currentPrice - stock.price;
-
- if (previousPrice >= 0) {
- Backpointer candidate =
- new Backpointer(backpointers.get(previousPrice).totalValue,
- stock);
-
- if (candidate.totalValue > best.totalValue)
- best = candidate;
- }
- }
- return best;
- }
-
- public static ArrayList chooseStocks(Stock stocks[], int priceLimit) {
- // assert stock values are integers
-
- // create backpointers
- ArrayList<Backpointer> backpointers = new ArrayList<Backpointer>();
- backpointers.add(new Backpointer(0, NOTHING));
- while (backpointers.size() <= priceLimit) {
- backpointers.add(chooseBackpointer(stocks, backpointers));
- }
-
- // postprocess backpointers
- ArrayList<Stock> result = new ArrayList<Stock>();
- for (int price = priceLimit; price > 0;
- price -= backpointers.get(price).stock.price) {
- // for debugging
- // System.out.println(price);
- Stock stock = backpointers.get(price).stock;
-
- if (stock != NOTHING)
- result.add(stock);
- }
- Collections.reverse(result);
-
- return result;
- }
-
- public static void main(String[] args) {
- int input;
- Scanner scanner = new Scanner(System.in);
- ArrayList<Stock> choices = new ArrayList<Stock>();
- int priceLimit = 0;
- boolean run = false;
-
- do {
- System.out.println("1. Add a stock");
- System.out.println("2. Buying power");
- System.out.println("3. Display stocks and buying power");
- System.out.println("4. Run");
- System.out.println("5. Exit");
-
- input = scanner.nextInt();
- String newLine = scanner.nextLine();
-
- switch (input) {
- case 1:
- System.out.println("Type 'Stock Ticker, Price (USD), "
- + "Value'");
- String stockInput = scanner.nextLine();
- String[] stockTraits = stockInput.trim()
- .split("\\s*,\\s*");
- try {
- choices.add(new Stock(Integer.parseInt(stockTraits[1]),
- Integer.parseInt(stockTraits[2]), stockTraits[0]));
- } catch (NumberFormatException e) {
- System.out.println("Invalid input - must enter: "
- + "ticker, #, #");
- } catch (ArrayIndexOutOfBoundsException e) {
- System.out.println("Wrong number of inputs - must "
- + "enter: ticker, #, #");
- }
- break;
- case 2:
- System.out.println("How much money do you have to "
- + "allocate?");
- priceLimit = Integer.parseInt(scanner.nextLine());
- break;
- case 3:
- System.out.println(choices);
- System.out.println(priceLimit);
- break;
- case 4:
- run = true;
- break;
- case 5:
- System.exit(0);
- break;
- default:
- System.out.println("Invalid input - must enter a number "
- + "between 1 and 5");
- break;
- }
- }
- while(run == false);
- // Stock stocks[] = {new Stock(3, 10, "A"), new Stock(4, 14, "B")};
- ArrayList result = chooseStocks(choices.toArray(
- new Stock[choices.size()]), priceLimit);
-
- for (int i = 0; i < result.size(); i++) {
- System.out.println(result.get(i));
- }
- }
+ public static Backpointer chooseBackpointer(Stock[] stocks,
+ ArrayList<Backpointer> backpointers) {
+
+ int currentPrice = backpointers.size();
+ Backpointer best =
+ new Backpointer(backpointers.get(currentPrice - 1).totalValue, NOTHING);
+
+ for (Stock stock : stocks) {
+ int previousPrice = currentPrice - stock.price;
+
+ if (previousPrice >= 0) {
+ Backpointer candidate =
+ new Backpointer(backpointers.get(previousPrice).totalValue,
+ stock);
+
+ if (candidate.totalValue > best.totalValue)
+ best = candidate;
+ }
+ }
+ return best;
+ }
+
+ public static ArrayList<Stock> chooseStocks(Stock[] stocks, int priceLimit) {
+ // TODO: assert stock values are integers
+
+ // create backpointers
+ ArrayList<Backpointer> backpointers = new ArrayList<Backpointer>();
+ backpointers.add(new Backpointer(0, NOTHING));
+ while (backpointers.size() <= priceLimit) {
+ backpointers.add(chooseBackpointer(stocks, backpointers));
+ }
+
+ // postprocess backpointers
+ ArrayList<Stock> result = new ArrayList<Stock>();
+ for (int price = priceLimit; price > 0;
+ price -= backpointers.get(price).stock.price) {
+ Stock stock = backpointers.get(price).stock;
+
+ if (stock != NOTHING)
+ result.add(stock);
+ }
+ Collections.reverse(result);
+
+ return result;
+ }
+
+ public static void main(String[] args) {
+ int input;
+ Scanner scanner = new Scanner(System.in);
+ ArrayList<Stock> choices = new ArrayList<Stock>();
+ int priceLimit = 0;
+ boolean run = false;
+
+ do {
+ System.out.println("1. Add a stock");
+ System.out.println("2. Buying power");
+ System.out.println("3. Display stocks and buying power");
+ System.out.println("4. Run");
+ System.out.println("5. Exit");
+
+ input = scanner.nextInt();
+ scanner.nextLine();
+
+ switch (input) {
+ case 1:
+ System.out.println("Type 'Stock Ticker, Price (USD), "
+ + "Value'");
+ String stockInput = scanner.nextLine();
+ String[] stockTraits = stockInput.trim()
+ .split("\\s*,\\s*");
+ try {
+ choices.add(new Stock(Integer.parseInt(stockTraits[1]),
+ Integer.parseInt(stockTraits[2]), stockTraits[0]));
+ } catch (NumberFormatException e) {
+ System.out.println("Invalid input - must enter: "
+ + "ticker, #, #");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ System.out.println("Wrong number of inputs - must "
+ + "enter: ticker, #, #");
+ }
+ break;
+ case 2:
+ System.out.println("How much money do you have to "
+ + "allocate?");
+ priceLimit = Integer.parseInt(scanner.nextLine());
+ break;
+ case 3:
+ System.out.println(choices);
+ System.out.println(priceLimit);
+ break;
+ case 4:
+ run = true;
+ break;
+ case 5:
+ System.exit(0);
+ break;
+ default:
+ System.out.println("Invalid input - must enter a number "
+ + "between 1 and 5");
+ break;
+ }
+ }
+ while(!run);
+ scanner.close();
+
+ // Stock stocks[] = {new Stock(3, 10, "A"), new Stock(4, 14, "B")};
+ ArrayList<Stock> result = chooseStocks(choices.toArray(
+ new Stock[choices.size()]), priceLimit);
+
+ for (Stock stock : result) {
+ System.out.println(stock);
+ }
+ }
}
class Stock {
@@ -134,19 +132,19 @@ class Stock {
String ticker;
public Stock() {
- price = 0;
- value = 0;
- ticker = "";
+ price = 0;
+ value = 0;
+ ticker = "";
}
public Stock(int price, int value, String ticker) {
- this.price = price;
- this.value = value;
- this.ticker = ticker;
+ this.price = price;
+ this.value = value;
+ this.ticker = ticker;
}
- @Override
- public String toString() {
- return "Ticker: " + ticker + " price: " + price + " value: " + value;
- }
+ @Override
+ public String toString() {
+ return "Ticker: " + ticker + " price: " + price + " value: " + value;
+ }
}