在我的下面的代码中,扫描仪在多次使用该方法后无法工作,我无法弄清楚原因。
public static void stockAccount(StockAccount uStock){
System.out.println("\nWelcome to the Stock Account Management System");
int input = 1;
String[] options = {"Find the price of a stock", "Display your portfolio",
"Buy stock", "Sell stock", "View a graph of your portfolio value", "View your account history", "Exit"};
String symbol;
int shares;
while(input != 7){
input = NumberedMenu("Enter the operation you would like to access", options);
if(input == 1){
System.out.println("Enter the symbol of the stock you would like to find information on.");
String str = a.nextLine();
uStock.displayStockPrice(str);
}
else if(input == 2){
uStock.display();
}
else if(input == 3){
System.out.println("\t\tBUY A STOCK:\nEnter the stock symbol for the stock you would like to purchase");
symbol = a.nextLine();
if(uStock.makeStock(symbol) == null)
System.out.println("Error: You did not enter a valid symbol. " + ERROR);
else{
System.out.println("Enter the number of shares you would like to buy");
shares = a.nextInt();
if(shares < 1){
System.out.println("Error: You can only purchase a positive number of shares. " + ERROR);
break;
} System.out.println("Enter the max price you are willing to pay for this purchase");
int max = a.nextInt();
uStock.buy(symbol, shares, max);
}
}
else if(input == 4){
System.out.println("\t\tSELL SHARES:");
System.out.println("Enter the symbol of the stock you would like to sell");
symbol = a.nextLine();
System.out.println("Enter the number of shares you want to sell");
shares = a.nextInt();
System.out.println("Enter the minimum price you want each stock to sell for");
double price = a.nextDouble();
uStock.sell(symbol, shares, price);
}
else if(input == 5){
System.out.println("Not currently implemented");
}
else if(input ==6){
System.out.println("\t\tHISTORY:");
for(String s : uStock.readFile("stock_transaction_history.txt"))
System.out.println(s);
System.out.println();
}
else if(input == 7){
break;
}
}
}
方法NumberedMenu接受两个参数,一个String和一个String数组,并打印出String作为标题,数组元素作为用户输入菜单的选项。每次while循环运行时都会运行,没有错误。但是在循环的第一次迭代之后,用户输入一个输入并被移动到适当的条件,当循环再次运行并且他们输入他们的选择时,Scanner方法允许他们输入他们自己的值/字符串/无论是什么&#39 ; t work,它直接跳到下一行代码。运行此代码的输出如下:
请稍等片刻,同时从Yahoo!获取股票数据金融...
我们的记录显示以前没有来自此位置的活动。一个新的银行账户和 现在正在为您制作股票账户。
欢迎使用帐户管理系统
请选择要访问的帐户
股票投资组合账户
银行帐户
退出
您的选择:1
欢迎使用股票账户管理系统
输入您要访问的操作
查找股票的价格
展示您的投资组合
购买股票
卖股票
查看投资组合价值图表
查看您的帐户历史记录
退出
您的选择:1
输入您想要查找信息的股票代码。
Ť
目前T价:34.57美元
输入您要访问的操作
查找股票的价格
展示您的投资组合
购买股票
卖股票
查看投资组合价值图表
查看您的帐户历史记录
退出
您的选择:3
BUY A STOCK:
输入您要购买的股票的股票代码
Ť
输入您想要购买的股票数量
4
输入您愿意为此次购买支付的最高价格
900
以138.28美元的价格成功购买了4股T股。
输入您要访问的操作
查找股票的价格
展示您的投资组合
购买股票
卖股票
查看投资组合价值图表
查看您的帐户历史记录
退出
您的选择:3
BUY A STOCK:
输入您要购买的股票的股票代码
错误:您没有输入有效的股票代码。
错误:您没有输入有效的符号。操作中止。
输入您要访问的操作
查找股票的价格
展示您的投资组合
购买股票
卖股票
查看投资组合价值图表
查看您的帐户历史记录
退出
您的选择:
请注意,购买股票后,一旦再次调用该方法并且它进入相同的条件,它将完全跳过Scanner方法。我不知道为什么,但这可能是我愚蠢的做法。