文字列に含まれているかっこ/区切り文字が平衡しているかどうかを確認する簡単なコードです。私は効率を改善するためにできることがたくさんあると確信していますが、現在のチュートリアルの目的のために、なぜこの形式ではうまくいかず、現在の問題は何かを知りたいと思います。文字列に含まれている角括弧と区切り文字が平衡しているかどうかを確認してください。
まず、変数cをLinkedListに追加することはできません。リテラル値を使用する必要があります。別のチュートリアルでも同じですが、変数を追加するだけです。
第2に、場合によっては、if文ごとにリンクされたリストにデリミタを追加しない場合があります。文字列 '(私が(もしあれば)区切り記号があれば)[文章]は[釣り合っている]と評価されますが、バランスの取れたものとして評価されますが、私のコードからしてはいけません。
最後に、私は同じエラーを持っていたが、散発的ではないすべての文字列 - 「kljf [] {} [] [] {csadlkfsd」
これがエラーを返し、いくつかの私は、例えば、ランダムに入力
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at set07102.Delimiter.main(Delimiter.java:16)
であり、16行目は 'char c = s.charAt(0);'そして、私が見る限り、これは起こってはならない。
System.out.println(strStack);リンクされたリストを調べることが最後にあるだけです - もしそれがコードをはるかに超えていれば!
どのようなヘルプamaaaaaaaaazingおかげでみんなされます。
import java.util.LinkedList;
import java.util.Scanner;
public class Delimiter {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter a string containing different types of brackets: ");
String str = scanner.nextLine();
String[] strSplit = str.split(" ");
LinkedList<Character> strStack = new LinkedList<>();
System.out.println(" ");
for(String s : strSplit) {
char c = s.charAt(0);
if(c == '('){
strStack.push('(');
}
if(c == '{'){
strStack.push('{');
}
if(c == '['){
strStack.push('[');
}
if(c == '<'){
strStack.push('<');
}
if(c == ')' && strStack.get(0) != '('){
System.out.println("The delimiters in the string " + "'" + str + "'" + " are not balanced!");
break;
}
if(c == ']' && strStack.get(0) != '['){
System.out.println("The delimiters in the string " + "'" + str + "'" + " are not balanced!");
break;
}
if(c == '}' && strStack.get(0) != '{'){
System.out.println("The delimiters in the string " + "'" + str + "'" + " are not balanced!");
break;
}
if(c == '>' && strStack.get(0) != '<'){
System.out.println("The delimiters in the string " + "'" + str + "'" + " are not balanced!");
break;
}
}
System.out.println("The delimiters in the string " + "'" + str + "'" + " are balanced. ");
System.out.println(" ");
System.out.println(strStack);
}
}
右と左の区切り文字の数が同じであることを確認するためのコードはまだありませんが、既存の問題を見つけたら十分簡単にそれを行うことができます。再度ありがとう –
あなたは何のために分割をしたいですか?あなたは入力の言葉を反復していますが、代わりに文字を反復処理する必要がありますか? –
'char c = s.charAt(0);行のStringIndexOutOfBoundsExceptionは、文字列にインデックス0がない、つまり文字列が空であることを意味します。 –