1

これをどのように表現するかはよくわかりませんが、基本的にはrgbカラーをxxx, xxx, xxxフォーマットで読み取り、それぞれxxxを配列に格納したいと思います。rgbを16進数に変換するプログラムを作成しています。GUIが作成されるまで(時間がかかる場合があります)、ターミナルで実行して入力しています。

現在、これは私がしていることです:

System.out.println("Enter the first set:");
rgb[0] = new Scanner(System.in).nextInt();`
System.out.println("Enter the second set:");
rgb[1] = new Scanner(System.in).nextInt();
System.out.println("Enter the third set:");
rgb[2] = new Scanner(System.in).nextInt(); 
  • 私は人々が使用するのを見てき.split(",")ましたが、これは私がやりたいことをするための最良の方法ですか?
  • 正規表現の方がうまくいくでしょうか?
  • 誰かが私が使用できるチュートリアルを知っていますか?私が見つけたもののほとんどは、私が以前よりも混乱したままになっています。

ちょうどあなたは私がプロジェクトのためにこれをしていないことを知っています(誰かが私を非難する前に)。私はすでにアルゴリズムを持っており、これを除いて他のすべてが機能します。

4

3 に答える 3

5

これが私の提案です:

  • Scanner入力を読み取るたびに新しいインスタンスを作成しないでください。プログラムの最初に作成して、全体で再利用するだけです。

  • このsplitメソッドは、引数として正規表現を取り、String[](引数の一致ごとに文字列を分割する)を返します。したがって、フォームの文字列を解析することを計画している場合"xxx, xxx, xxx"は、.split(",\\s*")おそらく最善の策です。\s任意の空白文字に\s*一致し、 \s0回以上一致します。

  • はであると想定しrgbているので、 (上記のように)から取得したものをint[]ループして、各要素を呼び出し、解析されたintをに追加できます。String[]splitInteger.parseIntrgb


関連ドキュメント

于 2012-12-11T03:52:14.483 に答える
2

split()メソッドを使用することをお勧めします。そうすれば、配列が返されます。

また、コードは冗長に見えます。ある種のループを使用することをお勧めします

于 2012-12-11T03:52:45.330 に答える
1

はい、分割はオプションです...

String[] strArray = inputString.split(",");
int[] rgb = new int[strArray.length]
for (int i=0; i<strArray.length; ++i) {
    rgb[i] = Integer.parseInt(strArray[i].trim());
}

スキャナーも動作します...

Scanner sc = new Scanner(inputString);
String match;
while ((match = sc.findInLine("(\\d+)"))!=null) {
    // here i print it, but you need to put it into an array (like above),
    // i'll leave it to you as an exercise
    System.out.println(Integer.parseInt(match));
}    
sc.close();
于 2012-12-11T03:55:55.297 に答える