回答編集履歴

3

修正

2022/09/13 10:57

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -1,4 +1,4 @@
1
- String.format の %s で文字数を指定した場合、Windows のコマンドラインプログラムを C で作った時の全角2/半角1のような動作(うろい覚え)は無く、単純に unicode 1 文字単位で動作しま
1
+ String.format の %s で文字数を指定した場合、Windows のコマンドラインプログラムを C で作った時の全角2/半角1のような動作(単に2バイト文字がたまたま半角2つ分のフォントだったとも)は無く、単純に unicode 1 文字単位で動作しているのでしょう。(char 2 つ以上使うコードの文字がどうなるのかは調べていせん)
2
2
 
3
3
  ファイルを読んで表示するだけのコードとして全体を作り直してみました。
4
4
  Windows のコマンドプロンプトで実行する前提として、 文字列を MS932 のバイト列に変換することで文字列全体の表示幅を得ています。

2

修正

2022/09/13 03:40

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -1,7 +1,7 @@
1
- String.format の %s で文字数を指定した場合、Windows のコマンドラインプログラムを C で作った時の全角2/半角1のような動作は無く、単純に unicode 1 文字単位で動作します。
1
+ String.format の %s で文字数を指定した場合、Windows のコマンドラインプログラムを C で作った時の全角2/半角1のような動作(うろい覚え)は無く、単純に unicode 1 文字単位で動作します。
2
2
 
3
3
  ファイルを読んで表示するだけのコードとして全体を作り直してみました。
4
- Windows のコマンドプロンプトで実行する前提と思いますので、 文字列を MS932 のバイト列に変換することで文字列全体の表示幅を得ています。
4
+ Windows のコマンドプロンプトで実行する前提として、 文字列を MS932 のバイト列に変換することで文字列全体の表示幅を得ています。
5
5
  for で空白を必要数表示することで解決されたそうですが、今の java の String には repeat メソッドがありますのでそれを利用しています。
6
6
 
7
7
  Main.java
@@ -91,7 +91,7 @@
91
91
  お財布,収,10000,N/A
92
92
  食費,支,10000,N/A
93
93
  ```
94
- 実行結果
94
+ 実行結果(teratail 上ではフォントの関係でズレ)
95
95
  ```plain
96
96
  |名目 |収入 |支出 |残額 |補足 |
97
97
  +---------------+--------------+--------------+------+-------------------------+

1

追加

2022/09/12 19:17

投稿

jimbe
jimbe

スコア12659

test CHANGED
@@ -1,6 +1,7 @@
1
1
  String.format の %s で文字数を指定した場合、Windows のコマンドラインプログラムを C で作った時の全角2/半角1のような動作は無く、単純に unicode 1 文字単位で動作します。
2
2
 
3
3
  ファイルを読んで表示するだけのコードとして全体を作り直してみました。
4
+ Windows のコマンドプロンプトで実行する前提と思いますので、 文字列を MS932 のバイト列に変換することで文字列全体の表示幅を得ています。
4
5
  for で空白を必要数表示することで解決されたそうですが、今の java の String には repeat メソッドがありますのでそれを利用しています。
5
6
 
6
7
  Main.java