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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

Java

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

Q&A

解決済

4回答

5192閲覧

拡張for分だけを使って九九を全て表示したい(1*1=1のような出力にする)

java_java

総合スコア12

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

Java

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

0グッド

0クリップ

投稿2018/03/17 06:48

前提・実現したいこと

拡張for分だけを使って九九を全て表示したい(下記の1*1=1のような出力にする)です。

九九の表(一の段から)
11=1 12=2 13=3 14=4 15=5 16=6 17=7 18=8 19=9
2
1=2 22=4 23=6 24=8 25=10 26=12 27=14 28=16 29=18
31=3 32=6 33=9 34=12 35=15 36=18 37=21 38=24 39=27
4
1=4 42=8 43=12 44=16 45=20 46=24 47=28 48=32 49=36
51=5 52=10 53=15 54=20 55=25 56=30 57=35 58=40 59=45
6
1=6 62=12 63=18 64=24 65=30 66=36 67=42 68=48 69=54
71=7 72=14 73=21 74=28 75=35 76=42 77=49 78=56 79=63
8
1=8 82=16 83=24 84=32 85=40 86=48 87=56 88=64 89=72
91=9 92=18 93=27 94=36 95=45 96=54 97=63 98=72 9*9=81

このようにしたです。

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

11=1 [I@70dea4e12=2 [I@70dea4e1*3=3・・・・・

のようにずっと続いてしまいます。

該当のソースコード

public static void main(String arg[]) {

int[] kuku = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] kuku1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; for (int kuku_a : kuku) { for (int i = 1; i <= 9; i++) { for (int j = 1; j <= 9; j++) { System.out.print(i + "*" + j + "=" + i * j + " "); if (i * j < 10) System.out.print(kuku); } } } }

}

補足

そもそも拡張for文の使い方が間違っているのか
何故、[I@70dea4e1*3=3・・・・・と続くのかがわりません。

javaを始めてまだ1週間で、質問になってるか伝わっているかも怪しいですが
よろしくお願い致します。

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

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

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

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

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

guest

回答4

0

ベストアンサー

ループを不必要に重ねているように見えます。
二重ループで問題なく表現できるはずです。

なかなか苦戦しているようですので、回答例をお見せしちゃいます。

Java

1int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 2for(int x: nums) { 3 for(int y: nums) { 4 System.out.printf("%d*%d=%2d ", x, y, x*y); 5 } 6 System.out.println(); 7}

あるいは

Java

1int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 2for(int x: nums) { 3 for(int y: nums) { 4 System.out.print(x + "*" + y + "="); 5 6 if(x*y < 10) { 7 System.out.print(" "); 8 } 9 System.out.print(x * y + " "); 10 } 11 System.out.println(); 12}

どの部分が無駄であるか、ご自身のコードと見比べてみてください。


なお、[I@70dea4eSystem.out.print(kuku);に対応しています。

コードの書き方について

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

投稿2018/03/17 06:57

編集2018/03/17 07:14
LouiS0616

総合スコア35658

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

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

java_java

2018/03/17 07:40

ありがとうございます!! ずっとループしており、抜け出せずにいました。 int i = 1; i <= 9; i++の形にもこだわってしまい 使わなくてもできたんですね・・・ 本当に助かりました。 ありがとうございます。
guest

0

Javaなど不要。そう、シェル芸ならね!

bash

1$ echo {1..9}*{1..9}|xargs -n1 -I@ sh -c 'echo @=$((@))'|xargs -n9 21*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 32*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 43*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 54*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 65*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 76*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 87*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 98*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 109*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

投稿2018/03/17 07:10

hichon

総合スコア5737

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

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

java_java

2018/03/17 07:42

もはや難しすぎてわからないです。。。。。 すみません汗
kazto

2018/03/18 12:48

問いへの回答としてはアサッテ向いてますけど、シェル芸大好きなので-2は厳しすぎると思ってプラスしときますね。
java_java

2018/03/18 12:55

なるほど、早くこの書き方を理解したいです!!
guest

0

java

1public class prog { 2 public static void main(String arg[]) { 3 int[] kuku = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 4 for (int y : kuku) { 5 for (int x : kuku) { 6 System.out.printf(" %d*%d=%2d", y, x, y * x); 7 } 8 System.out.println(); 9 } 10 } 11}

実行例
イメージ説明

投稿2018/03/17 10:09

katoy

総合スコア22324

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

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

java_java

2018/03/18 12:19

ありがとうございます!!
guest

0

System.out.print(i + "*" + j + "=" + i * j + " ");

i と j は文字列ではありません。整数型(int)です

投稿2018/03/17 06:53

y_waiwai

総合スコア87719

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

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

LouiS0616

2018/03/17 06:58

文法上全く問題ないです。 例えば 1 + "" + 2 は "12" です。
y_waiwai

2018/03/17 07:00

不勉強でしたねー
java_java

2018/03/17 07:40

intなどまだわかって数日なのでまた勉強していきます!! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問