前提・実現したいこと
javaで対象文字列にの左右にスペースを入れて中央寄せの文字列を作成したい
すでに文字列の左側に空白を入れるメソッドと文字列の右側にスペースを入れるメソッドはあるのでそれを使用して中央寄せをしたい
発生している問題・エラーメッセージ
引数を変更しても変化が見られない
期待したこと「 target 」という結果
hoge = rightPad(target, (byt-target.getBytes().length)+target.getBytes().length, str); hoge = leftPad(hoge, (byt-target.getBytes().length)+target.getBytes().length, str);
出力結果「taegrt」(変化なし
期待したこと「 target 」という結果
hoge = rightPad(target, (byt-target.length())+target.length(), str); hoge = leftPad(hoge, (byt-target.length())+target.length(), str);
出力結果「taegrt」(変化なし
期待したこと 引数を変更することによりどのような変化が現れるのか検証する
hoge = rightPad(target,50, str); hoge = leftPad(hoge, 50, str);
出力結果「taegrt](変化なし)
該当のソースコード
//問題の中央寄せのメソッド。
public static String toCenter(String target, int byt, String str) { String hoge = ""; if (!isPaddable(target, byt, str)) { return target; } hoge = rightPad(target,target.getBytes().length+(byt-target.getBytes().length)/2,str); hoge = leftPad(hoge,target.getBytes().length+(byt-target.getBytes().length)/2,str); return hoge; }
//右寄せメソッド、左寄せメソッド
// 対象文字列の左側に指定された文字列を詰めて指定サイズに整形する public static String leftPad(String target, int size, char padChar) { return leftPad(target, size, String.valueOf(padChar)); } // 対象文字列の左側に指定された文字列を詰めて指定サイズに整形する public static String leftPad(String target, int size, String padString) { // 入力チェック if (!isPaddable(target, size, padString)) { return target; } int padSize = size - getBytesAsShiftJIS(target); return substringBytes( padString.repeat((int) Math.ceil((double) padSize / getBytesAsShiftJIS(padString))), 0, padSize) + target; } // 対象文字列の右側に指定された文字列を詰めて指定サイズに整形する public static String rightPad(String target, int size, char padChar) { return rightPad(target, size, String.valueOf(padChar)); } // 対象文字列の右側に指定された文字列を詰めて指定サイズに整形する public static String rightPad(String target, int size, String padString) { // 入力チェック if (!isPaddable(target, size, padString)) { return target; } int padSize = size - getBytesAsShiftJIS(target); return target + substringBytes( padString.repeat((int) Math.ceil((double) padSize / getBytesAsShiftJIS(padString))), 0, padSize); }
//メソッドに入れる値 writer.println("Util.toCenter(\"1234\", 20, null) ==> " + Util.toCenter("1234", 20, null)); writer.println("Util.toCenter(\"1234\", 20, \"\") ==> " + Util.toCenter("1234", 20, "")); writer.println("Util.toCenter(null, 20, \"+\") ==> " + Util.toCenter(null, 20, "+")); writer.println("Util.toCenter(\"\", 20, \"+\") ==> " + Util.toCenter("", 20, "+"));
試したこと
中央寄せメソッドの引数bytが異なるとの旨があったので変更してみたが、何も変化が現れない。
補足情報(FW/ツールのバージョンなど)
右寄せメソッド・左寄せメソッド・メソッドに入れる値のコードは正しいので、中央寄せメソッドを変更しての訂正をお願いします。
回答2件
あなたの回答
tips
プレビュー