java - Java逻辑错误:继续运行相同的菜单
问题描述
package java_program;
import java.io.BufferedReader;
import java.io.FileReader;
public class Stock {
String Path, company;
public Stock(String Path, String company) {
this.Path = Path;
this.company = company;
}
public void blackHammer() throws Exception {
BufferedReader csv = new BufferedReader(new FileReader(Path));
String row;
while ((row = csv.readLine()) != null) {
String[] data = row.split(",");
String date = data[0];
float openPrice = Float.parseFloat(data[1]), highPrice = Float.parseFloat(data[2]), lowPrice = Float.parseFloat(data[3]),
closePrice = Float.parseFloat(data[4]);
System.out.println("Black Hammer Pattern of " + this.company + " in the past year:");
if ((closePrice < openPrice) && ((highPrice-openPrice) < (openPrice-closePrice)/2) && (((closePrice-lowPrice)/5 < (openPrice-closePrice)) && (
(openPrice-closePrice) < ((closePrice-lowPrice)/2)))) {
System.out.println("Pattern Found: " + date);
}
}
csv.close();
}
}
package java_program;
import java.util.Scanner;
import java_program.Stock;
public class IS3230_YourID_Demo {
public static void main(String[] args) throws Exception {
Scanner abc = new Scanner(System.in);
String[] arr = {"", "Microsoft", "Tesla", "HSBC"};
String[] file = {"", "MSFT.csv", "TSLA.csv", "HSBC.csv"};
while (true) {
System.out.println("Please choose the company you want to analyze:");
System.out.println("1 - Microsoft");
System.out.println("2 - Tesla");
System.out.println("3 - HSBC");
System.out.println("0 - Exit the program");
int c = abc.nextInt();
Stock ob;
switch(c){
case 0:
System.out.println("Thank you for using our stock analyzer: Bye");
break;
case 1:
ob = new Stock(file[1], arr[1]);
break;
case 2:
ob = new Stock(file[2], arr[2]);
break;
case 3:
ob = new Stock(file[3], arr[3]);
break;
default:
System.out.println("Error input");
break;
}
}
}
}
错误;
无论我向程序输入什么,它都会继续运行 IS3230_YourID_Demo 文件中的菜单
Please choose the company you want to analyze:
1 - Microsoft
2 - Tesla
3 - HSBC
0 - Exit the program
no analysis result can be shown
期望的结果是显示与模式匹配的日期
if ((closePrice < openPrice) && ((highPrice-openPrice) < (openPrice-closePrice)/2) && (((closePrice-lowPrice)/5 < (openPrice-closePrice)) && (
(openPrice-closePrice) < ((closePrice-lowPrice)/2)))) {
System.out.println("Pattern Found: " + date);
解决方案
您根本没有调用该blackHammer
方法。此外,break
语句将跳出循环,switch
但不会跳出循环。所以循环是无限的。
推荐阅读
- javascript - 使用谷歌地图 API setMarkers 函数时出现错误“w.getPosition 不是函数”?
- bazel - 在 Bazel 中,是否可以使用函数输出作为加载语句的输入?
- bash - ubuntu 使用参数运行脚本 - 作为键盘快捷键 gnome
- vue.js - 如何将过滤器计算属性应用于 Vuex 的 mapState 中的计算属性?
- javascript - 如何在 java 脚本循环中使用 push?
- macos - unstow 目录导致警告
- javascript - 使用 BeautifulSoup 进行网页抓取不起作用
- javascript - 未能在“IDBObjectStore”上执行“放置”:事务已完成
- javascript - 简单的 Shuffle.js 搜索不适用于 Bootstrap 4 卡
- embedded - CPU如何读取内存映射的IO?