ホームページ >Java >ユーザーが入力した配列リストの終わりのないループ

ユーザーが入力した配列リストの終わりのないループ

WBOY
WBOY転載
2024-02-05 22:00:051297ブラウズ
質問の内容

ユーザーが入力した車の仕様を取得し、配列リストに追加するメソッドを記述する必要があります。これは、ユーザーが入力したい任意の数の仕様を受け入れる必要があります (何も指定しない場合も含む)。 初めての投稿なので、文法が悪くて申し訳ありません。

リーリー

この条件はスペースが入ると false を返すと思います。このような連続的な反復は手動でのみ終了できます。

私も試してみました

リーリー

これは 1 回反復されて配列リストを返しますが、さらに入力できるようにする必要があります。 if または while 条件を hasnextline() に変更すると、同じ結果が得られます。車のトリム レベルには特定の書式設定が必要であるため、ここでは hasnext() を使用しています。入力が与えられていないときに hasnext() が false を返さない理由がわかりません。


正解


それは…いいえ。

考えてみてください。コンピュータは、何を入力するかを考えていて昼食後まで放置するユーザーと、「完了」したユーザーをどのように区別するのでしょうか? Web カメラを起動して AI 分析を実行し、ユーザー が入力を終えたように見えるかどうかを確認します。

system.in はキーボードではありません。これは「jvm プロセスの標準入力」である default であり、少なくとも Java アプリケーションをコマンドラインから起動する場合は、キーボードから読み取るように設定してください。 である必要はありません。 リーリー

今度は

system.in がこのファイルから読み取られます。キーボードからプロセスを読み取ることはできません。 リーリー

これで、おそらくバーコードをスキャンするたびに、Java アプリケーションは、バーコードの数字を入力して "Enter" を押したかのようにバーコードを受け取ります

1

これは、「この入力のソース」から「終了」までに依存します。ファイルの終わりに達すると、ファイルは終了します。

キーボードが「終了」することは不可能です - したがって、.hasnext()false を返すことができません。 ###空白###

コメントで「スペースの入力」について話しました。

では、

スキャナ

を理解していません。あなたは良い仲間です、これがおそらく最も誤解されている点です。 stackoverflow に溢れる質問の数を見ると、これは実際に当てはまります。

スキャナ

はキーボード

とは関係ありません。 スキャナは単純にテキスト入力ソースを取得し、それをチャンクに分割します。ブロックは「トークン」と呼ばれ、「トークン」は「区切り文字間のすべてのテキスト」によって定義されます。区切り文字は正規表現によって定義されます。デフォルトで使用される正規表現は \s です。たとえば、任意の量の空白などです。

###したがって:### リーリー

このコマンドを実行してコマンド ラインに hello world! と入力し、Enter キーを押して

my name is lajos

と入力すると、次のように表示されます。

リーリー

スキャナに関すること: 「separator」以下の内容を登録したり取得したりすることはできません。スキャナーに「空白は何個ありますか?」と尋ねることはできません。 また、スペースに遭遇したときに「停止してください」と頼むこともできません。いいえ、スペースはトークンとトークンを区切るだけです。スキャナの場合、Enter キーを押すことと、スペースバーを押してから Enter キーを押すことには、何の違いもありません。これはすべて「1 つ以上の空白文字」であるため交換可能であり、区切り文字に関するものであるため検出できません。

スキャナをまったく使用したくない場合もあります。 system.in自体は確かに差別化できます。 解決策 1

一般的な戦略は、プロンプトで「完了」を意味する魔法の言葉を言及することです。例えば:### リーリー 解決策 2

トレンチスキャナー。または、少なくともすべてを削除して、

nextline

を使用します。これは、

very

を他のすべてのメソッドと相互作用させます。1 つだけを選択してください (

nextline

または Everything)

nextline

を除く):

リーリー [1] 実際、ほとんどのバーコード スキャナはキーボードのように見え、動作しますが、デバイスはありません。これは、デバイスが /dev/ に存在せず、そのようなプロセスにパイプできないためです。しかし、一例として、それは機能します。 これを試すことができます: リーリー

以上がユーザーが入力した配列リストの終わりのないループの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。