を作るプログラムなんですが結果がずれて表示されるんですがどうせればきれいにそろうんでしょうか??
いくらやっても上手くいきません・・・。
どなたかヒントもらえませんか。
\tを試して一応そろったんですがもっとコンパクトな表示結果にしたいんです。
プログラムはこんな感じです。
public class Kukuhyou3 {
public static void main(String[ ] args) {
int i,j,kekka;
System.out.println(" | 1 2 3 4 5 6 7 8 9");
System.out.println("--+----------------------------");
for(i = 1;i < 10;i++) {
System.out.print( " "+ i +"|");
for(j=1; j < 10; j++) {
kekka=i * j;
System.out.print(" "+kekka);
}
System.out.println("");
}
}
}
No.1
- 回答日時:
(回答した後にエラーが発生したので、2重回答になっていたらごめんなさい。
)結果
kekka
の桁数を判別して、桁数に見合った数の半角スペースを間に入れればいいんじゃないかな。
No.2
- 回答日時:
java1.5だったら
System.out.print(" "+kekka);
を
System.out.printf(" %2d",kekka);
に代えればいいかと思いますが、
kekkaを文字列にした時1文字なら前にスペースを補うという方法で
String disp = ""+kekka;
if(disp.length()==1)disp=" "+disp;
とすればいいと思います。
No.3
- 回答日時:
public class Tkin {
public static void main(String[] args) {
for(int i=1; i < 10 ; i++) {
for(int j = 1 ; j < 10 ; j++) {
System.out.print(j+"*"+ i + "=" + (i*j));
if(i*j < 10) {
System.out.print(" ");
} else {
System.out.print(" ");
}
if(i == j) {
System.out.println();
break;
}
}
}
}
}
No.4
- 回答日時:
#2のかたが言われているようにjdk1.5からは、簡単にこのような整形出力ができるようになりましたが、jdk1.5以前では、このての処理が、javaでは簡単にできません。
残念ながら、自力で整形出力するクラスを作り上げるしかありません。自力で作成したForamatIクラスは、最初に、最大の桁数を指定すると、最大桁数に満たない数値については、空白を補填して、文字列にして返す機能を持っています。
package mypackage;
public class FormatI {
int maxdigit; // 最大の桁数
public FormatI( int inte ) {
maxdigit = inte;//最大の桁数
}
public String format( int number ) {
Integer num = new Integer(number);
Stringsnum = num.toString();
intsa = this.maxdigit - snum.length();
String s = "";
// 指定桁数に満たない場合はブランクを出力
for(int i = 0 ; i < sa ; i++ ) {
s += " ";
}
s += snum;
return s;
}
}
----------------------------------------
import mypackage.FormatI;
public class Sample {
public static void main(String[] args) {
int i,j,kekka;
System.out.println(" | 1 2 3 4 5 6 7 8 9");
System.out.println("--+----------------------------");
for(i = 1;i < 10;i++) {
System.out.print( " "+ i +"|");
for(j=1; j < 10; j++) {
kekka=i * j;
FormatI intf = new FormatI(3);
String ret = intf.format(kekka);
System.out.print(ret);
}
System.out.println("");
}
}
}
No.5ベストアンサー
- 回答日時:
2次元配列を使用してみました。
目下、デザインパターンの勉強中で、tatsu99さんみたいに抽象化、再利用性の高いものはできないのですが、以下のソースなどを元にして、他人のプログラムを読み取る、という能力も同時に身に付けてもらえたら、と思います。public class Kukuhyou3 {
public static void main(String[] args) {
int kuku [][] = new int[9][9];
System.out.println(" | 1 2 3 4 5 6 7 8 9");
System.out.println("--+----------------------------");
for(int i = 1;i < 10;i++) {
System.out.print( " "+ i +"|");
for(int j=1; j < 10; j++) {
// 答えが1桁の時のみ、前にも空白を入れます。
Figure blank = new Figure(10);
blank.judge(i,j);
kuku[i-1][j-1] =i * j;
System.out.print(" "+kuku[i-1][j-1]);
}
System.out.print("\n");
}
}
}
class Figure {
private int nbsp;
public Figure(int _nbsp){
this.nbsp = _nbsp;
}
public void judge(int i,int j){
if(i*j < nbsp) System.out.print(" ");
}
}
No.6
- 回答日時:
#3のjchさんのソースを勝手に借りて、ちょこっとだけ修正してみました。
public class Tkin {
public static void main(String[] args) {
for(int i=1; i < 10 ; i++) {
for(int j = 1 ; j < 10 ; j++) {
System.out.print(j+"*"+ i + "=");
// 答えが1桁の時のみ、前にも空白を入れます。
if(i*j < 10) System.out.print(" ");
System.out.print(i*j + " ");
// 九九表が直角三角形になるので、却下。
// if(i == j) {
// System.out.println();
// break;
// }
}
// 次の行へ移動。
System.out.print("\n");
}
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- Ruby vscode 文字化け 1 2022/05/21 19:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
論理演算子”||”またはの入力方法
-
javaのエラーが回収できない
-
Ctrl+Zが入力されると終了する...
-
processingで String str="AAAB...
-
コマンドライン引数の例外処理...
-
3つの値の中間値を求める
-
Randomメソッドの確率設定
-
javaが上手くいきません
-
7つ数字を表示したら改行すると...
-
九九の表
-
2次元配列の並び替え
-
繰り返しによる星印の出力
-
入力された入力値と最大値、最...
-
エラー(互換性の無い型)
-
Java 入力した整数値の合計を、...
-
点数をだす時に、maxとminがお...
-
javaの数字当てゲーム
-
テキストボックスに入力された...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ループ処理の際、最後だけ","を...
-
java キーボード入力された値の...
-
Java、2の0乗~10乗の表示
-
数値⇒漢数字変換 java
-
論理演算子”||”またはの入力方法
-
コマンドライン引数の例外処理...
-
JAVAのfor文で困っています。
-
続・ZZZ,ZZZ,ZZ9形式の金額形式...
-
Java 入力した整数値の合計を、...
-
7つ数字を表示したら改行すると...
-
テキストボックスに入力された...
-
countに実行した回数をいれたい...
-
総称型ArrayList<E>への参照...
-
Randomメソッドの確率設定
-
Ctrl+Zが入力されると終了する...
-
学校で課題を出されて困ってい...
-
Java キーボードから負の数が入...
-
階乗の式
-
キーボードから10人分の点数を...
-
Java 配列<選挙>
おすすめ情報