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.
答案 0 :(得分:0)
问题是Form.substring(H + 1)
没有按照您对e
的预期返回He9
,而是返回e9
。设为Form.substring(H + 1, 2)
。
此外,您不需要检查if语句中是否有== true,这是隐含的。另外,请检查一些命名变量的最佳实践。