Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多If-else If语句_Java_If Statement_Stringbuffer - Fatal编程技术网

Java 多If-else If语句

Java 多If-else If语句,java,if-statement,stringbuffer,Java,If Statement,Stringbuffer,您好,我在玩StringBuffer和StringBuilder,这是我写的一个小程序,帮助我理解它是如何工作的。然而,出现了一些奇怪的事情,与Stringbuffer无关,而是与for循环中的multi-if-else-if语句有关 我的小代码: public class c { public static void main(String args[]) { StringBuffer infixB = new StringBuffer(); String infix = "

您好,我在玩StringBuffer和StringBuilder,这是我写的一个小程序,帮助我理解它是如何工作的。然而,出现了一些奇怪的事情,与Stringbuffer无关,而是与for循环中的multi-if-else-if语句有关

我的小代码:

public class c
{
public static void main(String args[])
{
    StringBuffer infixB = new StringBuffer();

    String infix = "3/8";

    for(int i = 0; i < infix.length(); i++)
    {
        infixB.append(infix.charAt(i));
    }

    infixB.append(')');

    System.out.println("Your current infix expression: "+infixB.toString());

    //go through the 'infixB' 1 position at a time
    for(int i = 0; i < infixB.length(); i++)
    {
        if(infixB.charAt(i) == '3')
        {
            System.out.println("Digit 3 at: " +i);
        }
        else if(infixB.charAt(i) == '/')
        {
            System.out.println("Operator at: "+i);
        }
        else if(infixB.charAt(i) == '8')
        {
            System.out.println("Digit 8 at: "+i);
        }
        else if(infixB.charAt(i) == ')');
        {
            System.out.println(") found at: " +i);
        }
    }

}
}
然而,地球并不是完全圆的,所以我的结果是:

Your current infix expression: 3/8)
Digit 3 at: 0
) found at: 0
Operator at: 1
) found at: 1
Digit 8 at: 2
) found at: 2
) found at: 3

如您所见,由于某些原因,在for循环中,即使在上一个if或else if语句已经执行之后,最后一个else if语句仍在执行。

最后一个条件的末尾有一个分号。Java将把分号视为条件的主体,并始终将大括号中的块作为不相关的块执行。改变

else if(infixB.charAt(i) == ')');


此代码没有if条件,因此每次都会显示for循环条件

+1。我还建议您使用开关盒,因为您这次更快了
else if(infixB.charAt(i) == ')');
else if(infixB.charAt(i) == ')')
{
  System.out.println(") found at: " +i);
 }