首页 > 解决方案 > 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);

标签: java

解决方案


您根本没有调用该blackHammer方法。此外,break语句将跳出循环,switch但不会跳出循环。所以循环是无限的。


推荐阅读