ユーザーが入力した車の仕様を取得し、配列リストに追加するメソッドを記述する必要があります。これは、ユーザーが入力したい任意の数の仕様を受け入れる必要があります (何も指定しない場合も含む)。 初めての投稿なので、文法が悪くて申し訳ありません。
リーリーこの条件はスペースが入ると false を返すと思います。このような連続的な反復は手動でのみ終了できます。
私も試してみました
リーリーこれは 1 回反復されて配列リストを返しますが、さらに入力できるようにする必要があります。 if または while 条件を hasnextline() に変更すると、同じ結果が得られます。車のトリム レベルには特定の書式設定が必要であるため、ここでは hasnext() を使用しています。入力が与えられていないときに hasnext() が false を返さない理由がわかりません。
それは…いいえ。
考えてみてください。コンピュータは、何を入力するかを考えていて昼食後まで放置するユーザーと、「完了」したユーザーをどのように区別するのでしょうか? Web カメラを起動して AI 分析を実行し、ユーザー が入力を終えたように見えるかどうかを確認します。
system.in
はキーボードではありません。これは「jvm プロセスの標準入力」である default であり、少なくとも Java アプリケーションをコマンドラインから起動する場合は、キーボードから読み取るように設定してください。 である必要はありません。
リーリー
system.in がこのファイルから読み取られます。キーボードからプロセスを読み取ることはできません。
リーリー
1。
これは、「この入力のソース」から「終了」までに依存します。ファイルの終わりに達すると、ファイルは終了します。
キーボードが「終了」することは不可能です - したがって、.hasnext() は
false を返すことができません。
###空白###
スキャナ
を理解していません。あなたは良い仲間です、これがおそらく最も誤解されている点です。 stackoverflow に溢れる質問の数を見ると、これは実際に当てはまります。
スキャナ
とは関係ありません。
スキャナは単純にテキスト入力ソースを取得し、それをチャンクに分割します。ブロックは「トークン」と呼ばれ、「トークン」は「区切り文字間のすべてのテキスト」によって定義されます。区切り文字は正規表現によって定義されます。デフォルトで使用される正規表現は \s です。たとえば、任意の量の空白などです。
このコマンドを実行してコマンド ラインに hello world!
と入力し、Enter キーを押して
と入力すると、次のように表示されます。
リーリースキャナに関すること: 「separator」以下の内容を登録したり取得したりすることはできません。スキャナーに「空白は何個ありますか?」と尋ねることはできません。
また、スペースに遭遇したときに「停止してください」と頼むこともできません。いいえ、スペースはトークンとトークンを区切るだけです。スキャナの場合、Enter キーを押すことと、スペースバーを押してから Enter キーを押すことには、
何の違いもありません。これはすべて「1 つ以上の空白文字」であるため交換可能であり、区切り文字に関するものであるため検出できません。
スキャナをまったく使用したくない場合もあります。 system.in自体は確かに差別化できます。 解決策 1
一般的な戦略は、プロンプトで「完了」を意味する魔法の言葉を言及することです。例えば:### リーリー 解決策 2
トレンチスキャナー。または、少なくともすべてを削除して、nextline
を使用します。これは、nextline
または Everything)
リーリー
[1] 実際、ほとんどのバーコード スキャナはキーボードのように見え、動作しますが、デバイスはありません。これは、デバイスが
/dev/ に存在せず、そのようなプロセスにパイプできないためです。しかし、一例として、それは機能します。 これを試すことができます:
リーリー
以上がユーザーが入力した配列リストの終わりのないループの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。