Java入門・初心者質問スレ Part.9

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/03/09(土) 23:59:15.92ID:ACok0wnJ
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.8
http://mevius.5ch.net/test/read.cgi/tech/1528370228/
2019/11/27(水) 13:40:30.89ID:eKMjAvMi
コンストラクタに関しての質問です!

クラスを作成する際にコンストラクタを用意すると、
デフォルトコンストラクタが自動的には用意されなく
なるようですが、
インスタンス生成時に発動するのは、コンストラクタか
デフォルトコンストラクタの片方のみである、
という解釈で問題無いでしょうか?
(両方が発動する事はあり得ない...?)
2019/11/27(水) 14:42:58.29ID:ymKEnJ4Y
>>189
クラスにコンストラクタを明示的に定義しない場合に限り
コンパイラが自動的に生成する引数無しのコンストラクタをデフォルトコンストラクタと呼ぶ
コンストラクタを明示的に定義した場合にはデフォルトコンストラクタは生成されれない

インスタンス生成時はコンストラクタを指定する (発動はしない)
指定されたコンストラクタが別のコンストラクタを呼び出してれば
複数のコンストラクタが呼び出されることはある

もし、明示的に定義した引数無しコンストラクタも含めてデフォルトコンストラクタと呼んでいるなら
一つのインスタンス生成時に引数有りのコンストラクタと引数無しのコンストラクタの両方が呼び出されることはある
2019/11/27(水) 19:38:04.93ID:eKMjAvMi
>>190
了解です。
即レス感謝です、ありがとうございます!
2019/12/01(日) 07:25:23.15ID:31lHsrX5
独学の初心者です。よろしくお願いします
スッキリわかるjavaを読んだ後、ブロンズの黒本読んでいます
頭が悪いのでブロンズから頑張ります。
193デフォルトの名無しさん
垢版 |
2019/12/07(土) 16:45:03.75ID:Ls4Z5fPU
「○秒長押しされました」と表示されるサンプル
この記事を読んで参考にしたのですが
動画を長押しすると動画の内容と同じgif画像?を確認できる機能を実装する事は可能でしょうか?
194デフォルトの名無しさん
垢版 |
2019/12/07(土) 16:47:36.92ID:Ls4Z5fPU
すみません動画じゃなく画像です
195デフォルトの名無しさん
垢版 |
2019/12/07(土) 18:11:14.71ID:mWZs4nzy
キャプチャするタイミングが難しい機能に需要があるのか?
196デフォルトの名無しさん
垢版 |
2019/12/07(土) 19:33:12.07ID:IgndtoHY
>>195
いえ具体的に言うとgifサイトを作ろうと思っています
2019/12/07(土) 22:07:56.91ID:f6AT/JyU
JavaScriptの話ならWeb製作板の関連スレへどうぞ、らしいですよ。
あと「この記事」と書くならURLぐらいは貼ったほうが良いかと思います。
198デフォルトの名無しさん
垢版 |
2019/12/07(土) 22:13:53.91ID:IgndtoHY
>>197
サイトを載せても良かったのですか?始めてきましたのですいません…
javaで聞いてみます
2019/12/07(土) 22:47:33.94ID:/3OJwFPr
JavaScript(JS), Java は異なる言語です!
まず、どちらの言語か確かめろ!

Javaなら、このスレで良いし、
JSなら、この板ではなく、Web製作板の方へ書き込む!
2019/12/08(日) 18:00:47.44ID:I897a0vD
JavaとJavaScriptは両方勉強するように
2019/12/08(日) 18:12:01.45ID:7oRGKglS
Java→Python→HTML→Javascript
この順番であってる?
202デフォルトの名無しさん
垢版 |
2019/12/08(日) 21:27:19.53ID:L49zIdxx
しらん
203デフォルトの名無しさん
垢版 |
2019/12/08(日) 23:03:55.69ID:NjrEGBDe
>>201
何がやりたいの?
2019/12/09(月) 03:30:42.65ID:PdZy7TF4
正しい順番は
VBScript→ActionScript→Delphi→XSL-FOだよ
2019/12/09(月) 06:51:47.98ID:LWYACK6h
>>203
起業したい
206デフォルトの名無しさん
垢版 |
2019/12/09(月) 12:24:39.38ID:CtHj4jqx
どうぞ。遠慮なく。
2019/12/09(月) 17:04:33.97ID:+FpDkG8n
正しい順番は、この順番で読むこと!

スッキリわかる Java入門 第2版、2014
たのしいRuby 第6版、2019/3/19

起業に適する言語は、Ruby 一択!

成功したベンチャー・自社サービス系は、ほとんど、Rails, Sinatra。
GitHub, Twitter, Airbnb, Cookpad, カカクコム, GMOペパボ など

ハーバード大学にも、Rails の講座がある

サーバー側開発では、Ruby → Go
他には、JavaScript, Kotlin, Julia, Elixir
2019/12/09(月) 17:28:30.64ID:7ipbecmp
スッキリ厨w退散汁w
2019/12/09(月) 20:40:53.74ID:OFTzs0Zl
Javaスキルで独立(フリーランス)は厳しいな
PHPかRubyがいいよ

Javaはサラリーマン用の言語やね
2019/12/09(月) 20:51:26.34ID:ZryjKmS+
Ruby で食えるとは思わないのですが…だまされたとおもってやってみようかな?
211207
垢版 |
2019/12/10(火) 09:21:20.62ID:H4kARQqE
Rubyのフリーランス求人・案件情報
https://arma-search.jp/article/ruby-freelance

YouTube のKENTA の動画でもやってる。
web 系では、Python の10倍ぐらいある

Sinatra を使っている企業は、
アップル、BBC、イギリス政府、LinkedIn、Heroku、GitHub、Songbird、スタンフォード大学、レッドハットなど

Herokuは、Sinatraの開発を支援している

上からの順で、年収。
550〜600万円
Python, Kotlin, Ruby, Java

500〜550万円
C, JavaScript, PHP
212デフォルトの名無しさん
垢版 |
2019/12/10(火) 09:46:10.87ID:rfn5dPqX
Kotlin もよろしく
2019/12/12(木) 00:45:44.09ID:q3SJEpa/
まだProgateでJAVA勉強始めたばかりなんだけど、ちょっと違和感があって質問。
メインメソッドで変数のデータ型をきっちり指定してるのに、その後に続くメソッド定義で再度データ型指定するのって必要なの?
「int age」ってさっき指定したじゃん!
「public static void printData(int age〜」って書く度に二度もデータ型書かせんなよ!って思うんだけど。
それともあとあとデータ型を変更するようなことがあんの?
2019/12/12(木) 01:10:19.19ID:n05Ewb3K
>>213
public static void main (String[] args) {
int age = 20;
printAge(age);
}

public static void printAge(int age) {
System.out.println(age);
}

↑こういうこと言ってるんだよね?
メソッド定義にあるint ageと、mainメソッドにあるint ageは別物でたまたま名前が同じだけ
違う名前の変数でもint型ならprintAgeメソッドに渡せる

public static void main (String[] args) {
int age1 = 20;
int age2 = 22;
printAge(age1);
printAge(age2);
}
2019/12/12(木) 01:21:16.21ID:n05Ewb3K
public static void printAge(int age)

このメソッド定義はint型の変数を1つ受け取りますよ、
受け取ったその変数をこのメソッド内ではageという変数名で扱いますよ、
戻り値の型はvoid型(=なにも返さない)ですよ
ってなことを定義している

>二度もデータ型書かせんなよ!って思うんだけど。
こういう疑問を持つのは個人的にスジが良いと思うのでどんどん聞くといいかも
2019/12/12(木) 01:51:48.26ID:q3SJEpa/
>>214
レスありがとうございます
ああなるほど、つまりprintAgeメソッドではメインメソッドのint ageに関連した何かを行うから、
このprintAge内でもとりあえずageという変数名で扱うことにして、見やすくしておこうというわけ・・・なんですよね?
ずっと、なんで変数名だけで理解してくれないんだろう、そういう言語なのかなあと思ってました
2019/12/12(木) 02:38:13.67ID:n05Ewb3K
>>216
mainの中の変数名も、printAgeの引数名も意味のわかりやすい名前にして見やすく(あとで理解しやすく)しておこうというのはその通り

下のようなコードからprint部分をprintAgeメソッドとして抽出する場合は
もとが同じ名前なので渡す変数名とメソッド定義の引数名が同じになることが多いけど
必ずしもそうなるわけじゃない

public static void main (String[] args) {
int age = 20;
System.out.println(age);
}
2019/12/12(木) 02:55:02.44ID:6AtmeJ1B
メソッドの中に書いてあるint ageやString[] argsは引数と言って、厳密には変数とは異なる概念
引数と変数は同じ名前であっても必ず別のモノになる
今回はint型のageという変数の値を、int型のageという引数の値として、いわば代入しているような感じ
2019/12/12(木) 02:55:40.03ID:6AtmeJ1B
変数にはスコープという有効範囲があって、たとえばメソッド内でint xのように宣言した場合、その変数のスコープはそれを宣言したメソッドの中に限られる
隣のメソッドでいきなりxを参照しようとしてもエラーになる
改めてint xのような引数なり変数なりの宣言が必要だし、String xとしても良い
2019/12/12(木) 02:56:27.44ID:6AtmeJ1B
この狭いスコープの何が便利かというと、10万行くらいあるプログラムのどこかでageをint型で宣言されているとき、ある日誰かが他のメソッドでageをPerson型として宣言しても問題ないことにある
2019/12/12(木) 02:58:24.67ID:6AtmeJ1B
>>218
訂正
メソッドの中に書いてある
じゃなくて
メソッド名の次のカッコの中に書いてある
2019/12/12(木) 03:02:10.76ID:q3SJEpa/
>>217
ごっちゃにしてた変数名と引数名の区別がついたおかげで今やっているところのコードは全部理解できました
やっとオブジェクト指向に進めます
これ一発で理解できる人はすごいなあと思う
2019/12/14(土) 19:24:04.56ID:3zIjLAlr
初心者です。よろしくお願いします
ブロンズの黒本で勉強中です

public abstract class B implements A {
// any code
}

これは
「抽象クラスとしてBをもち、BはAを継承している」
という意味で宜しいのでしょうか。
224デフォルトの名無しさん
垢版 |
2019/12/14(土) 19:38:38.25ID:1W9B8xqK
アムロ「アソコにドップの変態が!」
225デフォルトの名無しさん
垢版 |
2019/12/14(土) 19:42:54.47ID:1W9B8xqK
>>223
「このプログラムは〜」のような問題文の文言が省略されているのだろうが、選択肢だけを見ると何を言っているのかわからない日本語。
226デフォルトの名無しさん
垢版 |
2019/12/14(土) 21:00:33.40ID:SgtXLdNQ
もち?
2019/12/14(土) 21:25:20.00ID:3zIjLAlr
>>225
返信ありがとうございます。ブロンズの黒本の問題です。
左側の数字(1.2.3.)は行数です。誤字脱字あるかもしれません。宜しくお願いします

問、次のようなインタフェースやクラスがあるとき、is-a関係を正しく表しているものを選びなさい、2つ選択
1. public interface A{
2. // any cdoe
3. }

1. public abstract class B imolements A {
2. // any code
3. }

1. public class C extends B {
2. // any code
3. }

1. public class D implements A {
2. // any code
3 .}

A. A is-a B
B. C is-a A
C. B is-a A
D. D is-a B
E. B is-a D
F. B is-a C
2019/12/14(土) 21:27:57.68ID:3zIjLAlr
>>225
public abstract class B implements A {
// any code
}

↑ここは
「抽象クラスとしてBをもち、BはAを継承している」という意味で宜しいでしょうか
2019/12/14(土) 21:39:00.99ID:Mmv8Rj84
もち、というのが変
もちだとするとBを持っているのは誰?
近くにhas-a関係の説明があって混乱してる?
Bがあり、とか、Bを定義し、とかならわかる
ほかはだいたい合ってる
正確にはAを継承しているのではなく実装している
2019/12/14(土) 22:21:37.89ID:3zIjLAlr
>>229
有難うございます。私の日本語がおかしいです。
「implemnts→継承」と覚えてしまいました。
「抽象クラスとしてBを定義し、BはAを実装している」ですね
231デフォルトの名無しさん
垢版 |
2019/12/14(土) 22:29:57.19ID:c7QhHveE
is-a関係は型が継承関係にあることを表していて
あるクラスをexntedsで継承するのは継承だし
あるインターフェースをimplementsで実装するのも継承の一種

問題のプログラムは次の関係にある
B ⇒ A
C ⇒ B
D ⇒ A

日本語で表現するなら
・抽象クラスBはインターフェースAを実装している
・クラスCは抽象クラスBを継承している
・クラスDはインターフェースAを実装している
ってところ

選択肢はB, Cが正解

is-a関係は日本語で考えて良いと思う
「AはBである」という場合
「A」を主語と言い
「B」を述語と言うけれども
述語の範囲内に主語が入っていれば論理的に正しい
たとえば、ドラえもんはロボットである、みたいな
ロボットはドラえもんである、は間違い、ペッパーくんかもしれないからね
232デフォルトの名無しさん
垢版 |
2019/12/14(土) 22:52:40.50ID:1W9B8xqK
>>230
一番おかしいのはBという自分自身がBをもつ書いているところ。

それとAを継承してもBが抽象クラスなので、Aのメソッドを実装したとは言えない。
233デフォルトの名無しさん
垢版 |
2019/12/14(土) 22:57:58.70ID:1W9B8xqK
>>230
単にあなたの日本語がおかしいのです。

「BはAを継承してAをもっている」が「BはAを継承してBをもっている」と書いてしまっています。
234デフォルトの名無しさん
垢版 |
2019/12/14(土) 23:00:22.57ID:1W9B8xqK
>>232 は間違い。implementたったね。
2019/12/15(日) 01:23:58.24ID:H0jhLNJt
すみません。頭が混乱してきました
解答は
B. C is-a A
C. B is-a A
とのことです
有難うございます
236デフォルトの名無しさん
垢版 |
2019/12/15(日) 01:26:49.20ID:z/NdhwFC
はっきり言ってこれは英語の問題。
2019/12/15(日) 06:12:13.61ID:fpSJINfx
is-a は、継承・一種である。kind of
has-a は、包含・部品を持つ・機能の実装・インターフェース

消防車は、車の一種である。is-a
車は、ハンドルを持っている。has-a
2019/12/15(日) 07:41:45.63ID:KTvKcc9V
黒本の回答に納得いってるならあとは問題ないと思うよ
239デフォルトの名無しさん
垢版 |
2019/12/15(日) 13:36:52.42ID:z/NdhwFC
>>237
それ英語がわからないと説明になっていないよ?
2019/12/15(日) 15:05:38.89ID:KTvKcc9V
has-aのところにインターフェースと書いてるあたり理解があやしいと思う
241デフォルトの名無しさん
垢版 |
2019/12/15(日) 15:14:07.99ID:z/NdhwFC
>>240
彼は言葉の書き方からしてダメプログラマだしね。
2019/12/15(日) 16:43:02.87ID:KTvKcc9V
知らんがな
243デフォルトの名無しさん
垢版 |
2019/12/15(日) 17:56:44.19ID:z/NdhwFC
>>242
1 http://i.imgur.com/LypT49R.jpg
2 http://i.imgur.com/C4ZpGzk.jpg
3 http://i.imgur.com/zI74k2w.jpg
4 http://i.imgur.com/MPL7tD7.jpg
5 http://i.imgur.com/C8AGLAo.jpg
6 http://i.imgur.com/cDQa1wx.jpg
7 http://img.nude-media.com/articles/064/b/26.jpg
8 http://i.imgur.com/78RviHc.jpg
2019/12/15(日) 19:34:30.20ID:RWOwdvLl
こんな所で趣味晒さんでもw
2019/12/15(日) 20:10:31.28ID:H0jhLNJt
ぐっすり寝たら頭が回復しました睡眠不足だと頭が回らなくなります。
雰囲気的に答えは分かるのですが、他人に説明出来るまで理解できてません

色々有難うございます
またお願いします('ω')ノ
2019/12/15(日) 21:29:51.12ID:H0jhLNJt
オーバーロードの問題が雰囲気的に答えを当てれるんですが
説明できるほどの理解力がないです
何度か黒本読み返して、まとめてから質問します
宜しくお願いします(゚∀゚)
2019/12/15(日) 22:08:08.79ID:a9EBtNju
Spring bootで練習用のプロジェクトを作っています
Spring組み込みのTomcatだと問題なく動くのですが
STSのPivotal tc Server v4.0でプロジェクトを立ち上げるとエラーになってしまいます
MyBatisの設定が足りないのだとは思うのですが
原因がわかる方いらっしゃいますか?

依存性
グループID:org.mybatis.spring.boot
アーティファクトID:mybatis-spring-boot-starter
バージョン:2.0.0

エラーメッセージ
***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'mybatis.configuration.incomplete-methods[0].arg0' to org.apache.ibatis.builder.annotation.MapperAnnotationBuilder:

Reason: Failed to bind properties under 'mybatis.configuration.incomplete-methods[0].arg0' to org.apache.ibatis.builder.annotation.MapperAnnotationBuilder

Action:

Update your application's configuration
2019/12/15(日) 22:41:52.13ID:jIykbH2E
3日でスッキリわかるjavaを駆け足で読んで白本の模擬試験ページまでやってみたら正解率53%で笑えなかった・・・
趣味でpython勉強始めて、転職先がjava使うから勉強始めたけど難しい
249237
垢版 |
2019/12/15(日) 23:19:10.22ID:fpSJINfx
Go は、継承を無くしたw

has-a しかないw
すべてインターフェース

包含・部品を持つ・機能の実装・インターフェース・Duck Typing
2019/12/15(日) 23:26:02.05ID:fpSJINfx
>>247
「spring boot error org.apache.ibatis.builder.annotation.MapperAnnotationBuilder」で検索!

エラーメッセージで検索するのが、開発の基本!
2019/12/16(月) 00:49:43.44ID:dHY/yF0Y
>>250
諦めずにググってみたところ解決しました!
以下のサイトでkazuki43zoo先生が
「この問題はversion 2.2.0.M4で解決してるよ」と仰っていたので
pom.xmlを修正したところ動くようになりました
ttps://github.com/mybatis/spring-boot-starter/issues/350
2019/12/16(月) 22:42:04.19ID:fZQeqn0a
明日シルバーの試験受けるけど怖いな
コマンドライン引数、data型、ラムダ式が頭に入らない
253デフォルトの名無しさん
垢版 |
2019/12/16(月) 22:45:57.06ID:yb7D3Ob/
>>252
実際の問題はかなり偏っている。気にしている問題はいっさい出ないかもしれない。
2019/12/16(月) 22:53:59.79ID:fZQeqn0a
>>253
そうなのか。
黒本で最後の模擬試験が初見で75%くらいの正答率だったけど、自分でもまぐれだと思うから恐怖が拭えないでいる。

先駆者様敵にこの辺は注意して抑えた方がいい、みたいな情報があったら欲しいです。
255デフォルトの名無しさん
垢版 |
2019/12/16(月) 22:59:34.95ID:yb7D3Ob/
>>254
時間配分は気にした方がいいよ。後半に時間がかかる問題が集中して落ちた経験がある。
256デフォルトの名無しさん
垢版 |
2019/12/16(月) 23:01:14.66ID:yb7D3Ob/
どのくらい問題パターンがあるかわからないけど、継承がらみの問題はかなり多いと思う。
2019/12/16(月) 23:04:36.36ID:fZQeqn0a
>>256
なるほど。
逆にその辺は点数取れてるからまだマシかな。
自分の得意分野ひけるようにお祈りせねば。

アドバイスありがとう。
2019/12/17(火) 00:01:37.45ID:usUOy1ft
シルバー頑張れ!
259デフォルトの名無しさん
垢版 |
2019/12/17(火) 20:41:21.95ID:MJlJMtAr
>>257 は落ちたんだろうな
260デフォルトの名無しさん
垢版 |
2019/12/19(木) 12:47:23.83ID:0uPukb6z
資格か。そういや俺コンピュータ関係の資格何も持ってないな。なんか取るか。若くないし定年も近づいてきたので今さら取っても無駄だけど。
261デフォルトの名無しさん
垢版 |
2019/12/19(木) 17:34:16.14ID:0fCAv49u
エラー箇所にカーソルを当てたらeclipseのIDEが解決策を示してくれてたのに、気づかずに1日無駄にしてしまった。
262デフォルトの名無しさん
垢版 |
2019/12/19(木) 17:35:31.71ID:z2h0/IGx
>>261
エラーって何だよ? 
2019/12/21(土) 10:28:22.30ID:kL8tLCEf
とりあえずさっきプロゲートをギブアップしてきた
配列と繰り返しのとこが難しすぎる
何をやる為のプログラミングなのかがサッパリわからない
もう少し目的をうまく伝えてくれる教材が欲しい
配列と繰り返しの目的をわかりやすく教えてくれる教材なら1万でも安くない


どなたか配列と繰り返しを初心者にもわかるようにちゃんと説明できている教材をご存知ないですか?
2019/12/21(土) 10:37:28.59ID:FVpaWGAx
俺もProgateのJavaは途中までやってた
とても有料まで進む気にならなかったわ
無料の部分で思いとどまって良かった
ProgateのJavaは途中で急に難しくなるからな
理解力がずば抜けてる人ならいいんだろうけど俺は凡人だしプログラミング初心者だしな
もっとわかりやすい初心者用のプログラミングアプリがあればいいのに
2019/12/21(土) 10:39:25.58ID:kL8tLCEf
結局本を買う事から始めてみるか
不安だから優しそうなJavaの本を片っ端から買ってみる
どうしてもJavaを覚えたい
2019/12/21(土) 14:02:41.77ID:tKqa0Mcd
>>263
説明出来てない教材のほうが少ないと思うぞ
「Java 配列とは」で検索して10個くらいの説明読み比べるといいかも
Progateはどんなもんなのか見てみたがあれはウンコ

仕事で考えてるならスッキリのような超入門書をサクッと読んだあと
Head Firstのようなしっかりした入門書を読むことを勧める
2019/12/21(土) 15:06:19.07ID:kL8tLCEf
>>266
゚+。:.゚おぉ(*゚O゚ *)ぉぉ゚.:。+゚
ありがたい
2019/12/21(土) 15:07:41.78ID:kL8tLCEf
てゆうかプロゲートでわからなかったところはネットで解決した
簡単に説明してて一発で理解できた
2019/12/28(土) 00:45:15.64ID:Nw+g0oHm
>>260
エクセル初級とか持ってる爺は可愛いかもしれない
2019/12/28(土) 00:51:07.95ID:Td7wq8Cw
プリミティブ型の変数の宣言と、インスタンスをnewする文だったら、
やはり前者を上に書くべきでしょうか?
2019/12/28(土) 01:28:06.39ID:b3ohKRMf
>>270
どういう順序で書けば読みやすくなるかを考えて決める
プリミティブだから先に書くべきって考え方はしない
2019/12/28(土) 02:16:55.89ID:Nw+g0oHm
超初心者です。宜しくお願いします
カッコに入るコードを選択する問題がありました

class Q27 {
public static void main ( String [ ] args )
int [ ] date = { 10,20,30,40,50 } ;
int sum = 0 ;
for ( int i = 0 ; 【ここにコードを挿入】; i ++ ) sum += date [ i ] ;
System . out . println ( sum / dara . length ) ;
}

解答
i < = date . length -1

解説で「変数 i は配列 date の添え字であるため、i の値が 0 からdate.length -1」まで変化するように条件式を設定すればよい」
との事ですが、いまいちわかっていません
申し訳ありませんが、どなたか解説お願いします。
273270
垢版 |
2019/12/28(土) 02:40:53.23ID:Td7wq8Cw
>>271
ありがとうございます

>>272
配列変数名がdateになってますが、dataの間違いですかね
日付は31日までですし…

配列dateの最後の要素(=5番目の要素)は、date[date.length]ではなく
date[date.length-1]となります(この場合はdate[4]が最後の要素となる)
添え字は0から始まるので最後の要素は要素数-1(=length-1)となる点に
お気を付け下さい
2019/12/28(土) 02:56:02.38ID:Nw+g0oHm
>>273
解説有難うございます
誤字脱字で申し訳ありません
「data」です。
添え字が0から始まるのは理解しております
問題で「 i++ 」と記入されているから「length-1」とするのでしょうか

お手数ですが宜しくお願いします
<m(__)m>
2019/12/28(土) 03:35:12.50ID:Td7wq8Cw
>>274
ごめんなさい、どこが分からないのかがいまいち伝わりませんでした…

i=0の時、data[0]=10
i=1の時、data[1]=20
i=2の時、data[2]=30
i=3の時、data[3]=40
i=4(=data.length-1)の時、data[4]=50
の全ての場合を足しこむ必要があるので、iは0からdata.length-1まで変化する必要が
あるのだと考えましたが
また明日以降質問して下さい
2019/12/28(土) 04:54:47.73ID:Nw+g0oHm
>>275
解説有難うございます。
添え字は0から始まる、とだけ理解してたのですが
詳しく書いて頂き出題の意味が分かりました。
私が出題の意味を理解してないんだと思います

本当に有難うございました。
2019/12/28(土) 05:53:14.15ID:Nw+g0oHm
何度も申し訳ありません
for文が苦手で理解できていません
for文の処理の順序を解説お願いします
左側の1から8は行数です

1 class Q27 {
2 public static void main ( String [ ] args ){
3 int [ ] data = { 10,20,30,40,50 } ;
4 int sum = 0 ;
5 for ( int i = 0 ; i <= data . length -1 ; i ++ ) sum += data [ i ] ;
6 System.out.println ( sum / data . length ) ;
7 }
8 }

ぱっと見の暗算で10+20+30+40+50=150を5で割るって考えてしまうんですが
自分の知能でコード解析すると
@3行目、int型の変数dataに要素10〜50を入れる
A4行目、in型のsumに0を代入
B5行目、for文、int型iに0を代入、iがdataより小さい間、回る。
ここまでしか分かりません
C5行目、0が代入されたsumにdata[0]の10、を足して代入
Dsum =0 に、data[0]=10を足して代入。sumは10
E6行目、10 割る data[0]の10 、なのでsumは0
Fdata[0]に入ってたiが5行目でインクリメントされi=1
Gi <= dataに戻り・・・1になったi よりdataが小さければ・・・

となり訳が分からなくなっています
大変お手数ですが、for文の回し方の順番をご教示願います
<m(__)m>
2019/12/28(土) 08:32:47.71ID:1iYlywTe
for文の前に、まだ配列についても理解があやしいな
@3行目はint型の変数dataではなく配列型の変数data
要素の型としてintを持つ配列だ
5個の値で初期化してるから、配列の長さは5になる
E6行目はdata[i]で割ったら分母10だけど、data.lengthで割ってるでしょ
lengthは配列の長さを表すから分母は5
つまり10/5=2で、まず2が出力される
ちなみに分母が10だったとしても10/10はゼロじゃないだろ落ち着け
「sumは0」という表現もあやしい
ここではsum / data.lengthの値をprintlnメソッドの引数に渡しているだけで、sumには代入してないからsumの値は変わらない
2019/12/28(土) 08:38:10.11ID:vGmL5pRR
>>277
ツッコミどころは色々ありますけど、5,6行に関しては分かりやすく書くと

for (int i = 0; i <= data.length - 1; i++)
  sum += data[i];
System.out.println(sum / data.length);

と書かれていて、これは

for (int i = 0; i <= data.length - 1; i++) {
  sum += data[i];
}
System.out.println(sum / data.length);

と同じです。つまりSystem.out.println()の行はループの外です。
2019/12/28(土) 08:42:36.18ID:1iYlywTe
B5行目、for文、「iがdataより小さい」というのが間違い
それをいうならi <= dataだろ
i <= data.length -1と書いてあるんだからlengthを無視してはいかん
「iがdataの長さより小さい」が正しい
data.lengthはさっきの説明通り5だから簡単に書き直すと
for (int i= 0; i <= 4; i = i + 1)
となる
2019/12/28(土) 08:46:52.36ID:1iYlywTe
ああ、ループの外だから2は出力されないか…
2019/12/28(土) 09:01:25.56ID:1iYlywTe
for (int i = 0; i <= 4; i = i + 1) {
//何か
}
なら理解しやすいはず
forの構文の意味は
for (ループの最初だけ実行する初期化処理; 継続するかどうかの判定; 1周ごとに行われる処理)

まずintの初期値が0になる
次に0<=4を評価して、成立するから「//何か」を実行
forに戻ってきてiをインクリメントしてiは1になる
こんどは1<=4を評価して、2回目の「//何か」を実行
iをインクリメントして2になる
2<=4も成立するから実行
中略
5<=4まで行ったら成立しなくなるので、ループを抜ける
結局「//何か」は5回実行されて終わり
2019/12/28(土) 14:26:04.86ID:Nw+g0oHm
有難うございます

「実行結果として30を表示するようにしたい」との問題です

@3行目、intの配列型が変数data、箱が5個
A4行目、intのsumに0を代入
B5行目、iに0を代入、iがdate.lemgthの長さより小さければfor文で回る
C5行目、data[i]=10、にsumを代入。sum=10
D6行目、sum=10 割る lengthの配列の長さ=5、なので【2】
Eforに戻ってきてiをインクリメントしてiは1になる
F今度は1<=4を評価して、2回目の「//何か」を実行
Giをインクリメントして2になる
H2<=4も成立するから実行
Idata[2]=20、sum+=20
J20/5=【4】
中略
K30/5=【6】
L40/5=【8】
M50/5=【10】
【】の中の合計=30

曖昧な点
「i=1の時、data[0]=10」だと数が合わないので
iを0にするために、data.length-1として
「i=0の時、data[0]=10」としている

Q1:この5回回った【】の中の合計は何処で足し算されてるのでしょうか
2019/12/28(土) 14:58:29.40ID:Nw+g0oHm
処理の順序が正しいかご教示願います

次にプログラムをコンパイル及び実行した結果として正しいものはどれか
1 class Q23 {
2 public static void main (String [ ] args ) {
3 int i = 1 , sum = 0 ;
4 while ( i ++ < = 10 ) sum + = i ;
5 System . out .print ( sum ) ;
6 }

解答、66が表示される

@intのiに1が代入
Asumは0が代入
Bwhileは〜の間
Ci=1が10より小さい間
Di=1に++、i=2
sum=0 += i=2、sum=【2】
Ei=2、
Fi=2が10より小さい間
Gi=2に++、i=3
sum=2 += i=3、sum=【5】
中略
Hsum=11 になったら終わり
sumにはiの2,3,4,5,6,7,8,9,10,11が加算され【65】になる
2019/12/28(土) 16:16:21.77ID:vGmL5pRR
>>284
合っていますが、

> 解答、66が表示される
ではなく「解答、65が表示される」、

> Hsum=11 になったら終わり
は 「i = 11 になったら終わり」ですね。

細かい部分をいい加減にするとあなたの理解の妨げになりますし、
読む方も書き間違えただけなのか理解できてないのか分かりにくくて面倒です。
2019/12/28(土) 16:28:31.89ID:vGmL5pRR
>>283
>>277のプログラムでfor文で繰り返し実行されるのは5行目の
sum += data[i];
部分(とi++)だけです。
ここでint配列に格納されているすべての要素を順にsumに足し合わせています。
sum = sum + data[0]; // i=0の時
sum = sum + data[1];
sum = sum + data[2];
sum = sum + data[3];
sum = sum + data[4]; // i=4の時

結果、forループ終了時点でsumは150 (= 10 + 20 + 30 + 40 + 50)で、
System.out.println(150 / 5) の結果(5はdata.length)、30が表示されます。
それだけのことです。
2019/12/28(土) 16:33:47.11ID:Nw+g0oHm
Javaの問題集でありました。なぜ10行目でコンパイルエラーになるのが理解できていません
for(;;)のカッコの中の;;が無限ループ?になるからでしょうか

public class p28Q26 {
public static void main(String[] args) {
int i=0;
for (;;) {
if(i >= 5)
i=0;
else
i++;
}
System.out.print(i);
}
}
2019/12/28(土) 16:36:30.25ID:Nw+g0oHm
>>285
解説有難うございます
「解答65が表示される」が正しいです。
誤字脱字申し訳ありません
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況