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

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

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

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

Q&A

解決済

4回答

1236閲覧

オラクル試験におけるforの問題

max-777

総合スコア17

Java

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

0グッド

1クリップ

投稿2020/08/20 06:32

編集2020/08/20 06:47

java

1class Test{ 2 public static void main(String[]args){ 3 for(int x=0; x<3; x++){ 4 for(int y=0; y<x; ++y) 5 System.out.print("a"); 6 System.out.print("B"); 7 } 8 } 9}

「上記のコードを出力表示した際に、結果として正しいのはどれか」という問題でした。for内にa,bもないので、何も表示されないという選択肢を選びましたが、違いました。解答はbabaabでしたが、仕組みが全く理解できません。例題にもそのようなものはなく、非常に不親切であると感じました。教えてくれる方がいれば、幸いです。

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

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

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

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

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

ozwk

2020/08/20 06:39

System.out.print(a); と System.out.print("a"); の違いはわかりますか?
max-777

2020/08/20 06:43

下の"a"は文字列ですよね? 上のaは変換されるaという認識です
dodox86

2020/08/20 06:44

前の質問でも何度か同じようなことを指摘されていますが、実際にご自分で動かしてみましたか?
momon-ga

2020/08/20 06:44

for(int x=o; x<3; x++){ なら、コンパイルエラーじゃないの?
tamoto

2020/08/20 06:44

そんな引っ掛け問題みたいなクソコードが問題だったのですか? ところで、問題に "b" をプリントするコードがどこにもないのでその回答にはなりえないと思います。
momon-ga

2020/08/20 06:48 編集

オラクルの試験は、ひっかけのあるクソコードだらけだよw 何が表示されますか?という問題の選択肢にコンパイルエラーってのが実際にある。
dodox86

2020/08/20 06:46

動かしてみるのもそうですが、デバッガーで1行1行ステップ実行させてみると分かるはずです。あと、 > for(int x=o; x<3; x++){ の部分、 x=o ではなく x=0 の間違いでは。
maisumakun

2020/08/20 06:50

「for内にa,bもない」とはどういう意味でしょうか?
max-777

2020/08/20 06:51

x=0でした。すいませんでした。確認したところ、出力表示は上記の通りでした。自分で一応動かして、頑張っていますが、未だに理解の至らない点があります。例題にも、無かったものですから…
Y.H.

2020/08/20 07:10

for(int y=0; y<x; ++y) System.out.print("a"); System.out.print("B"); と for(int y=0; y<x; ++y) { System.out.print("a"); System.out.print("B"); } の違いは判りますか?
max-777

2020/08/20 07:19

for(int y=0; y<x; ++y) System.out.print("a"); System.out.print("B"); と for(int y=0; y<x; ++y) { System.out.print("a"); System.out.print("B"); } の違いは判りますか? すいません、理解できません。
Y.H.

2020/08/20 07:40 編集

前者のループする範囲は{}が無いので、System.out.print("a"); だけです。 以下と同じです。 for(int y=0; y<x; ++y){ System.out.print("a"); } System.out.print("B"); 後者のループする範囲は、{}内のSystem.out.print("a");とSystem.out.print("B");です。
guest

回答4

0

インデントきれいにして
{}を補うとこうなります:

java

1class Test{ 2 public static void main(String[] args){ 3 for(int x=0; x<3; x++){ 4 for(int y=0; y<x; ++y){ 5 System.out.print("a"); 6 } 7 System.out.print("b"); 8 } 9 } 10}

投稿2020/08/20 06:47

ozwk

総合スコア13553

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

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

0

ベストアンサー

ozwkさんの回答にありますが{}を補うと以下の通り

java

1class Test{ 2 public static void main(String[] args){ 3 for(int x=0; x<3; x++){ 4 for(int y=0; y<x; ++y){ 5 System.out.print("a"); 6 } 7 System.out.print("b"); 8 } 9 } 10}

以下と違うので注意(インデントに意味は無い)
※なので、1行でも{}を省略しない方がよいという意見がある
※※ IDEのオートフォーマットなら、たぶんインデントを揃えるので違うブロックだとわかる

java

1for(int y=0; y<x; ++y){ 2 System.out.print("a"); 3 System.out.print("b"); 4}

で、ちょっと変形すると。

java

1class Test{ 2 public static void main(String[] args){ 3 for(int x=0; x<3; x++){ 4// for(int y=0; y<x; ++y){ 5// System.out.print("a"); 6// } 7 System.out.print("N"); 8 System.out.print("b"); 9 } 10 } 11} 12

NbNbNbと出力されることがわかります。

java

1for(int y=0; y<x; ++y){ 2 System.out.print("a"); 3}

の部分は、よくある単純なfor文で、x回、連続した"a"を表示します。

つまり、xの数だけ"a"を表示し、"b"を表示するというプログラムです。
xは、0,1,2と変化します。

0個のaは何も表示しないので

babaab

と、なります。

逆にわかりにくかったらごめんなさい。

投稿2020/08/20 07:01

編集2020/08/20 07:09
momon-ga

総合スコア4826

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

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

0

例題にも、無かったものですから…

パターンを覚えて通る試験ではありません。

投稿2020/08/20 06:52

maisumakun

総合スコア146063

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

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

max-777

2020/08/20 06:59

一度もそのような説明がなかったので、困惑していただけです。
maisumakun

2020/08/20 07:00

「そのような説明」とは、どのような内容を指しますか?
max-777

2020/08/20 07:07

forの基本的な概要のみ説明され、いきなり上記のような問題が出てくれば、分かりませんよねという話をしています。
maisumakun

2020/08/20 07:08

おそらく、試験自体が「forの基本的な概要のみ説明され」るような人を対象としたものではないのでしょう。
max-777

2020/08/20 07:16 編集

試験はオラクルのBronzeですよー。これって一番の初心者向けって書いてありました
maisumakun

2020/08/20 07:30

いままでの質問やコメントを見ていて、どれくらい真摯に取り組んでいるのでしょうかと疑問を付けざるを得ないです。
max-777

2020/08/20 07:37

基本的な事柄から入ったので、いきなり応用的な問題に対応出来なかっただけですよ。 あなたの時間がもったいないと思うので、自分の質問に関してスルーしていただいて、他の方々の回答に時間を割いてください。
m.ts10806

2020/08/20 09:53 編集

でしたら、赤の他人を巻き込む場所に投稿するのではなく、全て自分の中だけで済ますようにしたほうが良いですよ。 厚意による指摘を受け入れられない人がいつまでもまともに相手してもらえると思わないほうが良いです。 試験に通ることだけが目的なら他人の力は必要ないでしょう。問題集の答え丸暗記で終わりいいのでは?bronzeなんですよね。大目的は知らないですが、初級試験で他人を頼ってていいんですか? そうではなく、プログラミングの本質的なところを求めるならもっと意見を真摯に聞きましょう。
guest

0

for(int x=0; x<3; x++){ //0ですよね? for(int y=0; y<x; ++y) System.out.print("a"); System.out.print("B"); }

for内にa,bもないので、

for文によって実行されるのは、forの次に書かれた1文です。
ただし、{}を付けることで、複数の文を1つの文として実行可能です。

とした時、xのforとyのfor、それぞれの範囲はどこまでだと思いますか?

多分ですが、2文目のforのカッコが無いのが、問題を解くカギだと思います。指摘された範囲はよく理解できません。

そのとおりです。
その範囲をきちんと理解できているかどうかを問う問題です。

for( A; B; C) D; E;

とあった場合に、繰り返されるのはどれか?
という問題です。

以下余談ですが、

基本的な事柄から入ったので、いきなり応用的な問題に対応出来なかっただけですよ。

むしろ逆に思えます。基本が全くできていないので、ほんのちょっと形が変わっただけで混乱してしまうように見えます。
今回の問題も、応用問題ではなく、for文の文法の基本をきちんと理解しているかの確認問題です。

投稿2020/08/20 06:40

編集2020/08/20 08:15
amiya

総合スコア1218

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

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

max-777

2020/08/20 06:56

多分ですが、2文目のforのカッコが無いのが、問題を解くカギだと思います。指摘された範囲はよく理解できません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問