0

二分探索木を書いています。ユーザーは次のようにプログラムを使用します。

どのツリーをテストしますか (BST、ST、RBT)?

BST いくつのアイテムを挿入しますか? 10000 パターン (ランダムまたはソート)? 次のコマンド (X の挿入、X の削除、X の検索、高さ、終了)? find 111111 アイテムがありません。

最初の 3 つの選択肢については、文字列を使用して BST、ST、RBT から選択するだけでなく、ランダムまたはソートから選択することもできます。

String choice
if( choice == "random")
  insert random numbers

私が困っているのは4番目の選択肢です。たとえば、ユーザーが文字列として挿入 100 を入力した場合、100 を削除して int にする必要があります。もしそうなら、どうすればそれを行うことができますか?

4

3 に答える 3

4

関数の組み合わせを使用して、文字列が int かどうかを判断できます

public boolean isInteger(String str) {
  try {
    Integer.parseInt(str);
    return true;
  } catch(NumberFormatException e) {
    return false;
  }
}

この関数が true を返す場合 ... 文字列は整数です ... を使用して整数値を取得します

Integer.parseInt(str);
于 2013-03-01T04:20:04.483 に答える
1

最初に注意したいのは、String を == と比較するべきではなく、string.equals(comparedString); を使用するべきだということです。次のコードを使用して、人が入力したすべての入力を解析し、入力された文字列と入力された文字列値の両方を使用して、文字列の開始に依存しないようにすることもできます。これにより、それらすべてのオプションが満たされます。挿入、削除など。

String userInput;//received by system in
String choice;
int choiceInt;
for (int i = 0; i < userInput.length(); i++) 
{
    Character character = userInput.charAt(i);
    if (!Character.isDigit(character)) 
    {
        choice += character;
    }
    else if (Character.isDigit(character))
    {
        choiceInt += character;
    }
    else
    {
        System.out.println("Unable to determine character.");
    }

    /* Code for the comparison of String based option */
    //Example
    if (choice.equalsIgnoreCase("insert")//NOTE: the ignore case, 
                                         // you want users to be                        
                                         // able to enter in strings 
                                         // and not have a case sensitivity.
    {
        /* do the code you planned on doing here */
    }
}

有効なオプションとして受け入れたい文字列の可能性ごとに整数値を割り当てることもできます。これにより、コーディングが増加しますが、switch case ステートメントも増加します。(これはまだ if、else if、else ステートメントとして解釈されます) その時点で、それは開発者の意図と設計の好み次第になると思います。間違っている場合は修正してください。

try および catch ブロックを使用して、最後の else ステートメントを置き換えることもできます。

于 2013-07-16T18:12:32.370 に答える
0

これを試して:

if (input.startsWith("insert")) {
    int num = Integer.parseInt(input.replaceAll("\\D", ""));

}
于 2013-03-01T05:00:34.543 に答える