質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • Java

    13787questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

最後のカンマを消す方法について教えてください。

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 364

eipin

score 1

 前提・実現したいこと

Javaを勉強している者です。
現在、九九の出力を行っています。
出力は「1×1=1,1×2=2・・・1×9=9」改行「2×1=2,・・・」
というように各掛け算の後にはカンマが入り、1の段が終わったら改行して2の段、3の段という具合に出力をしたいです。ただその時に、各段の「1×9=9」や「2×9=18」などの最後に9をかけて積を求めた後のカンマはない状態で出力をしたいです。

ご指南のほど、よろしくお願いいたします。

 発生している問題・エラーメッセージ

エラーメッセージ

 該当のソースコード

public class Exe09 {

public static void main(String[] args) {

int[][] data = new int [9][9];

for (int i = 1; i < data.length; i++) {
System.out.println("");
for (int j = 1; j <= 9; j++) {
if (j < 10) {
int sum = (i * j) ;
System.out.print(i + "×" + j + "=" + sum + " ");
}
}
}
}
}

 試したこと

ここに問題に対して試したことを記載してください。
使用しているツールは
EclipseのJAVA6.0です

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

checkベストアンサー

+1

StringJoinerを使う方法もありますが、とりあえず愚直な方法を。

for(int i = 1; i <= 9; ++i) {
    System.out.print(i + "×1=" + i);
    for(int j = 2; j <= 9; ++j) {
        System.out.print(", " + i + "×" + j + "=" + i*j);
    }
    System.out.println();
}

System.out.printfを使うともうちょっと簡潔に書けます。

コードの書き方について

teratailには、上記のようにコードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
Java

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/03 16:10

    ご回答頂まして、ありがとうございました。また、コード表示についてのご指南もありがとうございます。
    こんなにシンプルに書けるとは思ってもなかったです。ありがとうございました。

    キャンセル

  • 2018/05/03 16:15

    よく見たらJava6なのでStringJoinerが使えないという罠があった

    キャンセル

  • 2018/05/03 16:19

    ほんとですね。

    キャンセル

+1

jが9未満の時コンマを出力しました。

public class Main {
    public static void main(String[] args){
        int[][] data = new int [9][9]; 

        for (int i = 1; i < data.length; i++) {
            for (int j = 1; j <= 9; j++) {
                int sum = i * j;
                System.out.print(i + "×" + j + "=" + sum + " ");
                if(i < 9){
                    System.out.print(",");
                }

            }
            System.out.println();
        }
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/03 16:08

    質問欄にif (j < 10) と書いてありますが、for文は9まで回りますので不要です。

    キャンセル

  • 2018/05/03 16:12

    ご回答戴き、ありがとうございました。
    9未満の時にコンマを出力するという手もあるんですね。その考えはなかったです・・・。
    ありがとうございました。

    キャンセル

+1

3項演算子を使うという方法があります。以下使用例、動作未確認

System.out.print(i + "×" + j + "=" + sum + (j < 9 ? "," : "\n") );

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/03 16:11

    書いてる間に解決していましたOTL

    キャンセル

  • 2018/05/03 16:14

    ご回答頂きまして、ありがとうございました。
    3項演算子というのは初めて聞きましたので、HogeAnimalLoverさんにご回答頂けなければ知りえないことでした。この方法も試してみます。ありがとうございました。

    キャンセル

+1

各行9回目で抜けるという考え方もできます。

public class Exe09 {

    public static void main(String[] args) {

        int[][] data = new int [9][9];

        for (int i = 1; i < data.length; i++) {
            for (int j = 1; ; j++) {
                int sum = (i * j) ;
                System.out.print(i + "×" + j + "=" + sum);
                if (j == 9)
                    System.out.println();
                    break;
                }
                System.out.print(", ");
            }
        }
    }
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/04 09:38

    返事が遅くなり申し訳ございませんでした。ご回答頂き、ありがとうございました。9回目で抜けるという考え方もあったんですね。参考にさせて頂きます。ありがとうございました。

    キャンセル

+1

質問文のコードをベースに変更してみました。

  • カンマでの区切りを表示するようにした。
  • 9 や 10 といった数字でなく、SIZE という定数を使うようにした。
  • date 配列は不要なので削除した。
public class Exe09 {
    final static int SIZE = 9;
    public static void main(String[] args) {
        System.out.println("");
        for (int i = 1; i <= SIZE; i++) {
            for (int j = 1; j <= SIZE; j++) {
                System.out.print(i + "×" + j + "=" + (i * j));
                if (j < SIZE) {
                    System.out.print(", ");
                }
            }
            System.out.println("");
        }
    }
}

実行結果
イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/04 11:33

    返事が遅くなり、申し訳ございませんでした。自分のコードをベースにご回答頂きありがとうございました。
    「final static」という書き方は初めて知りました。参考にさせていただきます。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    配列の平均値を出すメソッドの作成 JAVA

    //* クラスの出席番号順にString型配列nameに名前が、 //     * int型配列scoreにテストの点数が格納されています。 //     * //     * 出

  • 解決済

    配列priceから消費税を載せて、配列price2を返すメソッド

    課題の以下の問いに挑んでいます。 大体は出来たと思うのですが、消費税をprice2に載せた配列で上に返す事が出来ません。 ここの処理を上手く出来る方法を教えていただけないでしょうか

  • 解決済

    表の作り方

    JAVA初心者です。JAVAのくりかえしを使って、百ます計算の表を作成してみましたが、うまくいきません。以下が足し算の計算表です。 public class Tasizan {

  • 受付中

    メソッドの作成と平均点 Java

    平均点を出すクラスを作成してみましたが、メソッドの作成と教科・名前の 表示が出来ておりません。 どなたか教えていただけないでしょうか。 class ScoreAvg {     

  • 解決済

    Enumの使い方

    プログラム中にあるマジックナンバーを理解できる形に直そうと思いEnumを使おうとしているのですが、Enumの使い方がわかりません。 例えばプログラムで if (sum >= 50)

  • 解決済

    Javaのwhile文、do while文を使って計算する方法

    プログラム初歩で勉強中のものです。 色々なサイトで調べてもなかったので初歩的な問題ですが、質問させていただきます。 for文の繰り返しは分かるのですが、while文、do wh

  • 解決済

    100になる直前の加算結果出力

    javaで開始値と終了値を入力してその間の偶数を加算していき、合計が100を超えたら「数値が100を超えたため、処理を中止します。」とメッセージを出し、かつ合計が100になる前の加

  • 解決済

    変数が初期化されていないというエラーが出て困っています

    整数データが1行に1つ計500個書かれているテキストファイルdata_5_1000_500.txtのデータの最大値、最小値、平均値を求めるプログラムCalcFile.javaを書き

同じタグがついた質問を見る

  • Java

    13787questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。