私はhw用のプログラムを書いています。これらの記号のバランスをとるために、 l { }'s, ()'s, [ ]'s, " "'s, and /* */'s
とし、文字列リテラルとコメントブロックは無視しますが、その方法はわかりません。私のコードは部分的に動作していますが、それは{ }
になるとわかりません。また、/* */
を扱う際の問題もあります。私は立ち往生し、どの方向へ行くのか分からない。例えばシンボルのバランスをとるプログラムの作成方法は?
、与えられた:
public class Test {
public static final void main(String[) args) {
System.out.println("Hello.");
}
}
を{
が}
直前ではありませんので、それは2 }
不一致を出力します。シンボルをスタックにプッシュして比較するためにポップする必要があります。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class SymbolBalance {
public static void main(String[] args){
if(args.length>0){
try{
Scanner input = new Scanner(new File (args[0]));
MyStack<Character> ms = new MyStack<>();
String str;
char ch;
while(input.hasNext()){
str = input.next();
for(int i=0;i<str.length();i++){
ch = str.charAt(i);
if(ch == '{'||ch =='(' || ch=='[' ||ch=='"'||
(ch == '/'&&i<str.length() -1&&str.charAt(i+1)=='*'))
{
ms.push(ch);
}
else if (ch==')'){
if(ms.isEmpty()||ms.pop()!= '('){
System.out.println(") is mismatched");
}
}
else if(ch == ']'){
if(ms.isEmpty() || ms.pop() != '['){
System.out.println("] is mismatched");
}
}
else if(ch == '}'){
if(ms.isEmpty() || ms.pop() != '{'){
System.out.println("} is mismatched");
}
}
else if(ch == '*' && i<str.length()-1&&str.charAt(i+1) == '/'){
if(ms.isEmpty() || ms.pop() != '*'){
System.out.println("*/ is mismatched");
}
}
else if(ch == '"'){
if(ms.isEmpty() || ms.pop() != '"'){
System.out.println(" \"\" is mismateched");
}
}
}
}
input.close();
}
catch(FileNotFoundException e){
System.out.println("Cannot find file");
e.printStackTrace();
}
}
else{
System.out.println("No command line argument");
}
}
}
ようこそ:
以下は、私のリビジョンを使用してプログラムの作業インスタンスです。 [help]にアクセスして[ask]を読むのに時間をかけてください。フォームの質問は "ここに私のコードは、それをデバッグしてください"はオフトピックと見なされます。 StackOverflowはディスカッション、チュートリアル、またはデバッグサイトではありません。この仕組みは、あなたが問題を解決しようとしているときに、難問にぶつかったときに助けを求めて、あなたが何を試みたのか、あなたが理解していないものを明確に説明することが求められます。少なくとも、IDEデバッガのコードをステップ実行して、期待通りの結果を特定できるはずです。 –
コードをデバッグしようとしましたか?あなたのプログラマーがどこで、なぜあなたの '{'が正しく処理できないのかを教えてください。 – IQV
[小規模プログラムのデバッグ方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。[なぜ誰かが私を助けることができますか?質問?](http://meta.stackoverflow.com/q/284236) – EJoshuaS