Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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:为什么我的程序在';这不是真的吗?_Java_For Loop_If Statement - Fatal编程技术网

Java:为什么我的程序在';这不是真的吗?

Java:为什么我的程序在';这不是真的吗?,java,for-loop,if-statement,Java,For Loop,If Statement,此程序读取用户输入,例如: (这是(我的)输入) 然后迭代语句,在遇到“(”时将“(”添加到堆栈s中 以及在遇到“)”时从堆栈中删除“(” 然后,它检查堆栈中是否还有剩余内容,并根据特定类型括号中不匹配的数量打印消息 // ******************************************************************** // ParenMatch.java // // Determines whether or not a string of charac

此程序读取用户输入,例如: (这是(我的)输入)

然后迭代语句,在遇到“(”时将“(”添加到堆栈s中 以及在遇到“)”时从堆栈中删除“(”

然后,它检查堆栈中是否还有剩余内容,并根据特定类型括号中不匹配的数量打印消息

// ********************************************************************
// ParenMatch.java
//
// Determines whether or not a string of characters contains
// matching left and right parentheses.
// ********************************************************************

import java.util.*;
import java.util.Scanner;

public class ParenMatch
{
    public static void main (String[] args)
    {
        Stack<Character> s = new Stack<Character>();
        String line; // the string of characters to be checked
        Scanner scan = new Scanner(System.in);
        System.out.println ("\nParenthesis Matching");
        System.out.print ("Enter a parenthesized expression: ");
        line = scan.nextLine();

        String goodSoFar = "";


        // Test: Here is a test (which should work (or maybe it doesn't) )

        // loop to process the line one character at a time
        for (int i = 0; i < line.length(); i++) 
        {
            char c = line.charAt(i);
            goodSoFar += c;      // add the character to the string so far

            if( c == '(' )
            {
                // open paren so add it to the stack
                s.push( line.charAt(i) );
            }
            else if ( c == ')' );
            {
                // hit close paren so pull open paren off the stack
                if( s.size() > 0 )
                    s.pop();
                
                else
                {
                    // stack does not have a matching paren so show an error!
                    System.out.println("Error! Close parenthesis without a matching open parenthesis!");
                    System.out.println("Error encountered here: " + goodSoFar + "^");
                }
            }
        }
        
        scan.close();

        // check final stack
        if( s.size() > 0 )
        {
            System.out.println("Error! There are " + s.size() + " extra open parenthesis!");
        }
        else
        {
            System.out.println("The number of open parenthesis matched the number of close parenthesis!");
        }

    }

}

那么我的输出是:

Enter a parenthesized expression: (this (is (my))input)
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (t^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (th^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (thi^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this ^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (i^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is ^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (m^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my)^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my))^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my))i^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my))in^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my))inp^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my))inpu^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my))input^
Error! Close parenthesis without a matching open parenthesis!
Error encountered here: (this (is (my))input)^
The number of open parenthesis matched the number of close parenthesis!
但我对该输入的期望输出是:

(this (is (my))input)
The number of open parenthesis matched the number of close parenthesis!

else if(c==');
行上有一个多余的分号,导致后续块始终运行。

else if(c==')之后有一个
。那是打字错误吗?是的,那是造成我问题的打字错误。谢谢您!