变量未被If语句识别

时间:2016-04-08 14:25:48

标签: java

    public static void main(String[] args) 
    {
        Scanner input = new Scanner(System.in);

        int H = 0;

        System.out.println("Enter the *insert whatever the formula thing is called*");
        String Form = input.next();
        //System.out.println(Form);
        double Total = 0;

        if (Form.contains("H") == true)
        {
            H = Form.indexOf("H", H);
            //System.out.println(H);
            if (Form.substring(H+1).matches("[1-999].*") == true)
            {
                String M = Form.substring(H+1);
                System.out.println(M);
                int M2 = Integer.parseInt(M);
                Total = Total + (1.008 * M2);
                System.out.println(Total);
            }
            else
            {
                if (Form.substring(H+1).matches("e") == true)
                 {
                       System.out.println("Found 'e'");
                       //System.out.println(H);
                        if (Form.substring(H+2).matches("[1-999].*") == true)
                        {
                        String M = Form.substring(H+2);
                        System.out.println(M);
                        int M2 = Integer.parseInt(M);
                        Total = Total + (4.003 * M2);
                         System.out.println(Total);
                        }
                        else
                        {
                        Total = Total + 4.003;
                        System.out.println(Total);
                        }
                }
                else
                {
                    Total = Total + 1.003;
                    System.out.println(Total);
                }
        }
        //----------------------------------------------------------------------


    }

}
}

这就是整个代码,但是这部分我遇到了麻烦:

if (Form.substring(H+1).matches("e") == true)
                 {
                       System.out.println("Found 'e'");
                       //System.out.println(H);
                        if (Form.substring(H+2).matches("[1-999].*") == true)
                        {
                        String M = Form.substring(H+2);
                        System.out.println(M);
                        int M2 = Integer.parseInt(M);
                        Total = Total + (4.003 * M2);
                         System.out.println(Total);
                        }
                        else
                        {
                        Total = Total + 4.003;
                        System.out.println(Total);
                        }
                }
                else
                {
                    Total = Total + 1.003;
                    System.out.println(Total);
                }

我对这个小部分的问题是,当我尝试输入“He9”时,它会跳过整个第一个if语句并转到最后一个else语句,但是如果我把“他”放到它那就行了对于第一个If语句,跳过第二个,然后转到第二个到最后一个语句(就像它应该的那样)。

如果你们中的任何一个人好奇,这是针对学校项目= P.

1 个答案:

答案 0 :(得分:0)

问题是Form.substring(H + 1)没有按照您对e的预期返回He9,而是返回e9。设为Form.substring(H + 1, 2)

此外,您不需要检查if语句中是否有== true,这是隐含的。另外,请检查一些命名变量的最佳实践。