2016-05-19 4 views
0

異なるサイズの行列を水平に表示しようとしています。 出力用にBlueJ端末ウィンドウを使用しています。 行列の印刷は、左側の行列の行数がそれよりも多い場合に実行されますが、行数が少ない場合は、次の行列の配置がずれます。下の写真。Javaの出力テキストが半分のスペースにシフト

alternate output

:明白な解決策は、(第1の行列が終了した後に)第2の行列の前に来る1つのスペースを取り除くためかもしれないが、これは次の結果を得

current output

System.out.printf("%"+Integer.toString((width*numElements) + (numElements+4)) + "s", " "); 

コードは、第2の行列の行の前にスペースを生成するために使用しましたは、行列の最大値の長さに等しく、numElementsは行列の各行の要素の数に等しい。

これらの行列を正しく整列させるにはどうすればよいですか?

ありがとうございます!

+2

コードを表示できますか?また、パディング+タブを使って行列をグリッドに揃えようとしましたか? –

+0

はい。ここで私はそれをさらに調べています。アラインメントの問題は、Javaでアライメントエラーを引き起こすことが知られているモノスペースのフォントを使用した結果かもしれません。 – SorenLantz

答えて

2

一部のモノスペースフォントでは、Javaの特定の状況でスペースが正しく表示されません。少なくとも私は(BlueJ)テキストを使用しているプログラムでは、垂直に配置する必要があります少し離れている。この「ちょっとした」ビットは、通常のスペース文字のちょうど5/6であることが分かります。だから、プログラムによって生成されたミスアライメントを打ち消すには、ミスアライメントされた行の前に5/6スペース文字を追加するだけです。 javaで5/6スペース文字を達成するには、次のコードを使用します。

String five_sixth_space = String.valueOf((char)8194)+String.valueOf((char)8198)+String.valueOf((char)8198); 
+0

これはハッキーな、仕事のクロスプラットフォームのようなものだと思う。より良い解決策は、5/6ディスプレイの原因を修正するような根本的な問題を修正することだと思われます。 – Lightfire228

+0

Ur右ですが、私のCSクラスの宿題はすばらしく見えたかったです。だからそれは働く:) – SorenLantz

関連する問題