問題タブ [printstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
34 参照

java - jfx fextfield への system.out リダイレクトでスカンジナビア文字が表示されない

テキストフィールドで使用するスカンジナビア文字を正しくエンコードする方法を見つけようとして、数日間頭を悩ませてきました

これらの 3 文字: Æ Ø Å ( æ ø å) は ��� として表示されます。つまり、このコードを実行すると

「�st」を印刷します。理由がわかりません。

System.out を printstream にリダイレクトするコードを次に示します。

誰かがこの問題の解決策を持っているなら、それは大歓迎です!

0 投票する
3 に答える
586 参照

java - 数値のコンソール出力をテキスト ファイルに書き込む

簡単な質問ですが、ここで何が欠けているのかわかりません。1 行に 9 つの数値があり、合計 9 行のコンソール出力がある場合、その正確な出力を外部テキスト ファイルに書き込むにはどうすればよいでしょうか。テキスト ファイルでも同じように表示されます。

コンソールが次のようになっていると仮定します。

そして、そのコンソール出力は「myArray」という名前の配列変数に保存されます。それをテキストファイルに書き込んで、そのように(またはコンマで区切って)表示するにはどうすればよいですか

これまでのところ、私はこれを持っています:

ファイルに書き込むとき、各数値はそれぞれの行に配置されます。可能な支援はありますか?ありがとうございました!

0 投票する
1 に答える
57 参照

java - java.lang.System の in メンバーと out メンバーはどこで初期化されますか?

SystemJavaのクラスに関連する2つの質問があります。

まず、in (入力) および out (出力) オブジェクトはどこで初期化されますか? これらのオブジェクトは静的として宣言され、Systemクラスで初期化されてSystemおらず、クラスにはコンストラクターがありません。

2 番目の質問は、in (入力) オブジェクトが入力ストリームとして宣言されているため、バイト データを読み取り、out オブジェクトもoutputStreamすべてのタイプのプリミティブ データを書き込むことができる理由です。ストリームは、バイト データの読み取り/書き込みに使用されます。toStringメソッドを呼び出すとは言わないでください。

0 投票する
1 に答える
36 参照

java - 出力が意図したとおりにならない

ファイル「ab.txt」を読み取ろうとして、その内容を「Output.txt」に K 回保存しようとしているので、入力ファイルの内容を出力ファイルで K 回取得することになっていますが、取得しているのはコンソールでK回印刷しているのに対し、1回。

0 投票する
2 に答える
202 参照

java - Java: ストリームを介して通信する 2 つのスレッドは会社であり、3 つのスレッドは群集です

このコード セグメントでは、パイプを作成し、一方の端に Scanner を接続し、もう一方の端に PrintStream を接続して、複数のコンシューマ スレッドとプロデューサー スレッド間で通信します。次に、3 つのスレッドを作成して開始します。

  1. 最初のスレッドはコンシューマ スレッドです。Scanner をチェックして、テキスト行が利用可能かどうかを確認し、それを消費して stdout に出力し、数ミリ秒間スリープしてから繰り返します。消費するものがない場合は、それに関するメッセージを出力し、スリープして繰り返します。

  2. このコード セグメントの 2 番目のスレッドは何もしません。詳細については、以下をご覧ください。

2.5 3 番目のスレッドが起動するまでに 3 秒の遅延があります。

  1. 3 番目のスレッドはプロデューサーであり、最初のスレッドが消費するテキスト メッセージを生成するだけです。メッセージを生成し、スリープします

出力(期待どおり):

また、scan.nextLine() がブロックされていることにも注意してください (利用可能なデータがないことを示すメッセージがないため、データは「途中」であっても常に「利用可能」です)。

ここで、2 番目のスレッドの本文を、最初のスレッドが消費するテキストを生成するコードに置き換えると、次のようになります。

次に、最初のスレッドの no data 節をトリガーし始めます。

したがって、2 番目のスレッドが PrintStream オブジェクトを使用してメッセージを生成し始めると、パイプで何か問題が発生し、コンシューマ スレッドは反対側でメッセージを見つけることができなくなります。

そして今、物事は奇妙になります。たとえば、2 番目のスレッドを非常に長いループに投げ込むことで、2 番目のスレッドが終了しないようにすると、パイプが詰まることはありません。

出力:

したがって、3 番目のスレッドが生成を開始する前に 2 番目のスレッドが終了した場合、最初のスレッドは 3 番目のスレッドからメッセージを受け取ることはないと思います。ただし、3 番目のスレッドが生成を開始するまで 2 番目のスレッドがハングアップした場合、すべてが期待どおりに進みます。

何が起きてる?2 番目のスレッドは、終了時にパイプ/ストリームを閉じていますか (または、パイプ/ストリームに対して他のアクションを実行していますか)? もしそうなら、なぜですか?また、2 番目のスレッドが終了する前に 3 番目のスレッドがパイプ/ストリームの使用を開始した場合、パイプ/ストリームを閉じないように見える (または何らかのアクションを実行しない) のはなぜですか? 2 番目のスレッドがメッセージを生成し、3 番目のスレッドが開始する前に終了したときに、このコードを期待どおりに「機能させる」方法はありますか (つまり、最初のスレッドがいずれかまたは両方のプロデューサー スレッドによって生成されたものを消費するようにする)。

背景: これは、複数のクライアントが 1 つのプロデューサー スレッドからのメッセージを消費するシステムの重要なコンポーネントを要約したものです。ただし、プロデューサー スレッドは、すべてのクライアント スレッドが準備完了を通知するまで開始できません。クライアント スレッドごとに、準備ができているかどうかを問い合わせる別のスレッドがあります。すべてのクライアント スレッドが準備が整ったことを通知すると、プロデューサー スレッドが起動されます。スレッドをストリーム経由で通信させようとしているので、後でそれらを複数のコンピューターに分散し、ソケットを使用してパイプをセットアップし、基になるコードに最小限の変更を加えることができます。ここでも別のソリューション戦略を自由に提案してください。ただし、上記のソリューションが機能しない理由を理解したいと思います。

0 投票する
1 に答える
628 参照

java - PrintStream はファイルを作成していませんか?

58 行目でファイルが見つからないというエラーが表示されますが、PrintStream でファイルが作成されたはずではありませんか? (注: ファイルはまったく作成されません。)

ありがとう!

なぜ、追加する必要があるのか​​詳細