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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Java

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

Q&A

解決済

4回答

1189閲覧

ダイスのでための数をアスタリスクで、表現したい

mo-

総合スコア1

Java

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

0グッド

0クリップ

投稿2020/12/05 10:53

サイコロを●回振った時に、縦軸にサイコロの目、横軸に出た回数をでつけていくプログラムを作りたいのですが、 どうしても ●行になってしまいます どうしたら横にが 付いてくれるのでしょうか

ソースコード
*``` Java
コード
int n =0;
for int i=0; i< max; i++) {
int dice=rand.nextInt(6)+1

if(dice ==1) { dice1 = (" * "); System.out.println(" 1:" + dice1 ); } else if(dice ==2) { dice2 = (" * "); System.out.println(" 2: "+dice2); }

これを6までくりかえしています。

これをコンパイルするとこうなります

5回サイコロをふって1 2 1 5 2が出た場合、

1:*
2:*
1:*
5:*
2:*

本当はこうしたいです

1:**
2:**
3:
4:
5:*
6:

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/12/05 11:02

> dice2 = (" * "); > System.out.println(" 2: "+dice2); のようにしていれば、コードの通り " * " しか出力されません。 while文やfor文などのループ処理を学び、うまく使いましょう。
guest

回答4

0

ベストアンサー

以下のようなコードで動作が確認できると思います。

  • HashMap を使って各出目の回数を記録(インクリメント)しています。
  • System.out.print(改行しない)、と System.out.prinln(改行する)を使い分けています。
  • System.out.printf() も使ってみました。

ご質問があればコメントください。

import java.util.*; public class Main { public static void main(String[] args) throws Exception { Main m = new Main(); m.run(10); } void run(int max) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i=1; i<=6; i++) map.put(i, 0); // 各出目の回数を0に初期化 Random rand = new Random(); for(int i=0; i<max; i++) { int dice=rand.nextInt(6)+1; System.out.printf("%dが出ました。\n", dice); map.put(dice, map.get(dice)+1); // 出目の回数をインクリメント } for(int i=1; i<=6; i++) { System.out.printf("%d:", i); int n = map.get(i); // 各出目の回数を取得(*の表示用ループに使う) for(int j=0; j<n; j++) System.out.print("*"); System.out.println(); } } }

出力例

1が出ました。 6が出ました。 4が出ました。 4が出ました。 1が出ました。 6が出ました。 6が出ました。 6が出ました。 3が出ました。 4が出ました。 1:** 2: 3:* 4:*** 5: 6:****

投稿2020/12/08 03:47

JavaCommons

総合スコア86

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

はじめに長さ6の配列を用意して0初期化(中身を0にする).
サイコロを振って,出た目の配列をインクリメント(1が出た:list[0]+=1).
サイコロを振り終わったら,二重ループでサイコロの目ごとに出力

int[] list = {0, 0, 0, 0, 0, 0}; // 出目をインクリメント for(i = 0; i < 6; i++) { sytem.out.print(i + ":") for(j = 0; j < list[i]; j++) { sytem.out.print("*") } system.out.println() }

投稿2020/12/06 13:35

succulent

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

全体の構成を見直す必要があります。
このプログラムの内容は大きく分けて2つに分ける事ができます。
1つは『サイコロを振って、その記録を取る』こと。
もう1つは、『記録を元にグラフを作る』事です。

同じ事を人間の手でやる事をイメージして下さい。
一人は『サイコロを何回か振って記録を取る係』
もう一人は『記録を元にグラフを書く係』
お互いがきちんと仕事をする為には、二人の間には、何が必要か?をまずは考えて見て下さい。

投稿2020/12/05 19:02

amiya

総合スコア1218

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

printlnメソッドは、文字列を出力したあとに改行します
まずは、これをprintメソッドに変えれば、改行されることはなくなります、が、これでもまだダメですね。
あなたなりに考えて、コードを修正してみてください

投稿2020/12/05 11:30

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問