-1

このプログラムはトークナイザーで動作していますが、部分文字列を使用してこれを行うにはどうすればよいか疑問に思っていました。

私がやろうとしているのは、ユーザーに14個の数字/文字を入力させることです。入力を1つずつ取得したい。

トークナイザーでは、ユーザーは「1 A 2 B 3 C 4 D 5 E 6 F 7 G」のように、トークナイザーが機能するように各数字/文字の間にスペースを入れて入力する必要があります。

部分文字列でやりたいことは、ユーザーが「1A2B3C4D5E6F7G」のように入力できるようにすることです

        str = JOptionPane.showInputDialog(null, "Enter the work hours");
    StringTokenizer st = new StringTokenizer(str);

    while (x < 7) {

        if (st.hasMoreTokens()) {
        startday[x] = st.nextToken();
        endday[x] = st.nextToken();

        }

        x++;
    }
4

2 に答える 2

1

その場合、内部の char 配列を単純にループできます。

str = JOptionPane.showInputDialog(null, "Enter the work hours");
for (char entry:str.toCharArray()) {
  processValue(entry);
}

または、オプションのスペースを許可するには:

str = JOptionPane.showInputDialog(null, "Enter the work hours");
for (char entry:str.toCharArray()) {
  if (entry != ' ') {
    processValue(entry);
  }
}
于 2012-12-07T13:49:58.740 に答える
0

トークンを使用している場合、結果の文字列から正規表現を使用して空白を削除できます。

私の意見では、そのようなものを使用substringすることはあまり効率的ではありません。しかし、本当にそのようにする必要がある場合は、ここを読んでください。

于 2012-12-07T13:48:32.387 に答える