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

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

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

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1473閲覧

指定した範囲の配列の検索

kt-

総合スコア5

Java

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

1グッド

0クリップ

投稿2021/01/06 15:12

編集2021/01/06 22:36

###私が知りたいこと
私は今年から本格的にJavaを使い始めた初心者です。
public staticメソッドを使って、
(メソッド名) search
(引数 1) int[] x
(引数 2) int a
(引数 3) int from
(引数 4) int to
(戻り値) int : 配列xfrom から to-1 までの範囲で a が現れる最初の位置 (x[n]==a であるような最小
n), なければ to

この条件で、上記のプログラムを書くにはどのように書けばよいでしょう。この問題に対して恥ずかしい話、経験が浅いせいか、悩みに悩んでも全く分からないでいます…。
今後の参考にしたいので、初心者の私でも分かりやすいご教授をお願い致します。

#####追記
ご指摘にあった通り、書き直し、完成に至りました。
様々な方のご支援のあってのことです。今後はこういうプログラミングが自力でできるよう努力していく所存です。皆様、多大なご迷惑をお掛けして申し訳ございませんでした。
そして、ご教授いただきありがとうございました。

public

1 int []x1={1,2,4,3,5}; 2 int a=3; 3 int from=1; 4 int to=4; 5 System.out.println(search(x1,a,from,to)); 6 } 7 8 public static int search(int[] x, int a, int from, int to) { 9 for (int i = from; i < to; i++) { 10 if (x[i] == a) { 11 System.out.println(i); 12 return i; 13 } 14 } 15 return to; 16 } 17} 18
TN8001👍を押しています

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

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

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

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

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

kt-

2021/01/06 15:49

ご指摘の通り書きました。この最初の部分に対して、メソッドの中身はどうなるのでしょうか?
hoshi-takanori

2021/01/06 15:50

それだと、main メソッドの中でローカル変数 x, a, from, to を宣言しています。 今回は search メソッドを作るという問題なので、main メソッドとは別に search メソッドを作りましょう。
kt-

2021/01/06 16:04

ご指導の通り、searchメソッドの始めの方をつけ、書き直してみました。 ここからのsearchメソッドの中身はどう表現するのでしょうか?
swordone

2021/01/06 16:13

始めの時点で間違えている
kt-

2021/01/06 16:17

始めというと、どこが違うのでしょうか?
hoshi-takanori

2021/01/06 16:18

search メソッドの修飾子、戻り値のデータ型、メソッド名、引数 1 までは OK です。 問題は引数の数ですが、それだと引数は 1 つしかありません。問題文には何と書いてありますか?
kt-

2021/01/06 16:30

配列xの要素の位置from から to-1 までの範囲でx内の 要素a が現れる最初の位置 (x[n]==a であるような最小の n), aがfrom から to-1 の間になければ toの位置を表示するプログラムを作成せよと書かれています。
hoshi-takanori

2021/01/06 16:34

ですね。で、x が引数 1 で、a と from と to は何でしょうか?
kt-

2021/01/06 16:37

それぞれ引数 2、引数 3、引数 4ですか?
hoshi-takanori

2021/01/06 16:41

そうです。search の引数は 4 つありますので、そのように書きましょう。
kt-

2021/01/06 16:44

つまり、残りの引数をmainに移動させるのですね?
hoshi-takanori

2021/01/06 16:49

んー、ちょっと違います。今は、search には引数が 1 つしかなくて、a, from, to は search のローカル変数になってます、これらを search の引数にして欲しいのです。
kt-

2021/01/06 16:53 編集

要するに、追記に書き直したような感じでよいという事ですか?
hoshi-takanori

2021/01/06 16:53

search の引数はできました。すばらしい。 ところで、このメソッドを main から呼んでるところがありますが、そこでは引数をいくつ渡してますか?
kt-

2021/01/06 16:55

4つですか?
hoshi-takanori

2021/01/06 16:58

だといいんですが…。引数が 4 つあるメソッドを呼ぶときは、引数を 4 つ渡す必要があります。 main から search を呼んでるところはどこですか? そこには何と書いてありますか?
kt-

2021/01/06 17:00

System.out.println(search(x)); のところですか?
hoshi-takanori

2021/01/06 17:01

そこですね。search に引数をいくつ渡してますか? また、何を渡してますか?
kt-

2021/01/06 17:01

1つでxを渡しています。
hoshi-takanori

2021/01/06 17:02

ですね。1 つで大丈夫でしょうか? 大丈夫じゃないとしてらどうしますか?
kt-

2021/01/06 17:03

なるほど、4つとも渡しますね。
kt-

2021/01/06 17:05

追記に書かれているようでいいでしょうか?
hoshi-takanori

2021/01/06 17:09

そうですね。4 つ渡す必要があります。 ところで、main では search に x, a, from, to の 4 つを渡してますが、それぞれどんな値ですか?
kt-

2021/01/06 17:10

int []x={1,2,3,4,5}; int a=3; int from=4; int to=2; ですね。
hoshi-takanori

2021/01/06 17:13

なるほど。そう思いますよね…。 えっと、それぞれが書いてある場所に着目してください。 int []x={1,2,3,4,5}; はどこに書いてありますか? int a=3; と int from=4; と int to=2; は?
kt-

2021/01/06 17:14

int []x={1,2,3,4,5}; はmainに、 int a=3; と int from=4; と int to=2; はsearchメソッドに書かれていますね。
hoshi-takanori

2021/01/06 17:18

ですね。メソッドの中に書かれた変数をローカル変数と言って、そのメソッドの中でしか使えません。 main から search に x, a, from, to を渡したいのですが、main には x しかない状態です。
kt-

2021/01/06 17:22

つまり、int a=3; と int from=4; と int to=2; もmainに書くのでしょうか?
hoshi-takanori

2021/01/06 17:25

そういうことです。 また、search には引数 x, a, from, to があるので、同じ名前のローカル変数は作れません。 なので、search の int a=3; と int from=4; と int to=2; は消しちゃいましょう。
kt-

2021/01/06 17:27

こんな感じでしょうか?
hoshi-takanori

2021/01/06 17:31

はい。ついにここまで来ましたね。 ところで、この状態で search を呼び出したら、search は何をしますか?
kt-

2021/01/06 17:35

int[]x,int a,int from,int toがそれぞれ検索に必要なので、mainからそれらを持ってくる、でしょうか?
hoshi-takanori

2021/01/06 17:46

まぁそうなんですが、具体的にどんな値を持ってきて、それを使って何をしますか?
kt-

2021/01/06 17:53

int[]xの配列をもってきて、配列の範囲をint from、int toを持ってきて決め、その範囲の中にmainから持ってきたint aがあればaの位置を、なければtoの位置を表示するようにmainに呼びかける、ですかね?
hoshi-takanori

2021/01/06 17:55

そうですね。今回の範囲はどこからどこまでですか?
kt-

2021/01/06 17:56

fromからto-1 までの範囲とあります。
hoshi-takanori

2021/01/06 17:58

そうなんですけど、その from とか to - 1 とかの具体的な値は?
kt-

2021/01/06 18:01

この場合だと、書き直しましたが、fromは2 to‐1は3ですね。
hoshi-takanori

2021/01/06 18:04

お、すばらしい。そうですね。もとは from は 4 で、to - 1 が 1 だったので範囲がおかしかったです。 で、その 2 から 3 の範囲に対して何をするんでしたっけ?
swordone

2021/01/06 18:07

すいません、そのくだり、回答とそのコメントでやっていただけないでしょうか?
hoshi-takanori

2021/01/06 18:09

そうですね、それでは回答欄に何か書くことにします。
kt-

2021/01/06 18:11

2 から 3 の範囲に対してaである3があれば、その3の要素の位置を表示する。 また、aが5の場合toである4番目の位置を表示するようにする、でした。
kt-

2021/01/06 18:12

swordone様迷惑かけて申し訳ございません。
guest

回答1

0

ベストアンサー

続きはこの回答欄のコメントでやりましょう。

投稿2021/01/06 18:10

hoshi-takanori

総合スコア7895

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

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

kt-

2021/01/06 18:12

2 から 3 の範囲に対してaである3があれば、その3の要素の位置を表示する。 また、aが5の場合toである4番目の位置を表示するようにする、でした。
hoshi-takanori

2021/01/06 18:13

はい。それで、2 から 3 の範囲には何がありますか? ってか、2 から 3 の範囲ってどこですか?
kt-

2021/01/06 18:16

2から3、つまりx[1]からx[2]の範囲ですね。その中の範囲にはaである3がありますね。
hoshi-takanori

2021/01/06 18:21

惜しい。配列の 2 から 3 の範囲と言ったら普通は素直に x[2] から x[3] の範囲です。 x[2] と x[3] の値はそれぞれ何ですか?
kt-

2021/01/06 18:22

それぞれ3と4です。
hoshi-takanori

2021/01/06 18:24

そうですね。そうするとこのメソッドの戻り値は何になりますか? (というか、メソッドの戻り値はご存知でしょうか?)
kt-

2021/01/06 18:25

いいえ、戻り値とは何でしょう?
hoshi-takanori

2021/01/06 18:28

メソッドの戻り値というのは、メソッドが何か計算とか検索とかをして、その結果として返す値のことです。今回求めたいものは何でしょうか?
kt-

2021/01/06 18:30

3の値のある配列の位置、ですか?
hoshi-takanori

2021/01/06 18:31

ですね。その位置はどこでしょうか? また、それをどうやって求めますか?
kt-

2021/01/06 18:33

位置はx[2]です。どうやって求めるかはifとかを使うのでしょうか?
hoshi-takanori

2021/01/06 18:37

そうですね。位置に関しては単に 2 というのが求める値で、それを戻り値としますが、戻り値については置いときましょう。 どうやって求めるかは、if も使いますね。if を使って 2 の位置に 3 があるかどうか調べるにはどうしますか?
kt-

2021/01/06 18:43

えっと…ちょっと分からないですが、for(int i=0; i<x.length; i++);を使い、if (x1[i]==a) みたいなものを用いるのでしょうか?
hoshi-takanori

2021/01/06 18:45

それです。ちなみに、for(int i=0; i<x.length; i++) だとどこからどこまで探すことになりますか?
kt-

2021/01/06 18:46

要素の最初から要素の最後までですか?
hoshi-takanori

2021/01/06 18:54

はい、そうなります。が、今回は from から to - 1 までなので、for 文はどう書きましょうか?
kt-

2021/01/06 18:55

for(int i=from; i<to; i++)でしょうか?
hoshi-takanori

2021/01/06 18:56

そうです。ちゃんと分かってるじゃないですか。で、次は if とどう組み合わせるかですね。
kt-

2021/01/06 19:01

合ってましたか。良かった。 しかし、ifと組み合わせるにはどうすればいいのか分からないです…。 まず、指定された範囲の中に 3 があるかどうかを確かめなければないといけないのですが…。
hoshi-takanori

2021/01/06 19:05

なるほど。ではいったん for は忘れて、if の使い方を考えましょうか。 if を使って 2 の位置に 3 があるかどうか調べて、あったらどうするんでしたっけ? (ちなみに、自分は時間がずれてて眠くないからいいんですが、寝る時間とか大丈夫でしょうか?)
kt-

2021/01/06 19:09 編集

私も大丈夫ですので心配しなくてもいいですよ。 if を使って 2 の位置に 3 があるかどうか調べて、あったら2と表示されるようにする、でしょうか?
hoshi-takanori

2021/01/06 19:14

ですね。ちなみに、コードは本来質問文を編集すべきですが、編集すると swordone さんに通知が飛ぶので、このコメント欄に書きましょう。で、if を使って 2 の位置に 3 があるかどうか調べて、あったら2と表示するコードは書けますか?
kt-

2021/01/06 19:18

うーん、ちょっと分からないですね…。(x1[i]==a)みたいなものを使うことは分かっているんですが…。
退会済みユーザー

退会済みユーザー

2021/01/06 19:18

早起きしたらすごいチャット・・・最後まで見守らせていただきます。 お二人とも、ファイト!です。
hoshi-takanori

2021/01/06 19:21

if 文の使い方は、  if (条件) {   条件が成り立つ場合にやること  } って感じですね。条件は x1[i]==a みたいなやつです。ところで、= と == の違いは分かりますか?
kt-

2021/01/06 19:22

分からないです。違いは何でしょう?
hoshi-takanori

2021/01/06 19:25

= は代入です。例えば変数 z があって、z = 1; とすると z の値は 1 になります。 == は比較です。z == 1 とすると、z が 1 かどうか調べる、ってことです。で、  if (z == 1) {   System.out.println("z は 1 です。");  } は、z が 1 の時は「z は 1 です。」と表示して、z が 1 でなければ何もしません。
kt-

2021/01/06 19:29

という事は、for(int i=from; i<to; i++){ if(x[i]==a){System.out.println(i) }ということなのでしょうか。
hoshi-takanori

2021/01/06 19:37

ですです。(細かいことを言うと、{ } の対応がおかしかったりしますが、それはさておき。)  for (int i = from; i < to; i++) {   if (x[i] == a) {    System.out.println(i);   }  } これは、from 〜 to - 1 の範囲で、配列に a という値があれば、その位置を表示する、というコードになります。 さて、ここで問題です。 int[] x = { 3, 3, 3, 3, 3 };; int a = 3; int from = 2; int to = 4; のとき、上のコードは何を表示しますか?
kt-

2021/01/06 19:41

2ですかね?
kt-

2021/01/06 19:44

あとは、3ですか?
hoshi-takanori

2021/01/06 19:45

はい、2 と 3 です。どうしてそうなるかは分かりますか?
kt-

2021/01/06 19:47

最初の要素を見つけた時点でループが止まらないから、でしたっけ?
hoshi-takanori

2021/01/06 19:50

そうですね。if 文は条件が成り立ったら中の処理を実行して、その後は条件が成り立っても成り立たなくても次に進みます。で、for 文の中に if 文がある場合は、次の繰り返しに進みます。 ところで、問題文には何を表示するって書いてありましたっけ?
kt-

2021/01/06 19:51

x[i]==a であるような最小の iを表示する、でした。
hoshi-takanori

2021/01/06 19:53

そうですね。この場合、最小の i は 2 ですから、2 だけ表示すればよくて、3 は不要でした。 が、3 も表示されてしまいます。さあどうしましょう?
kt-

2021/01/06 19:54

どうすればよいのでしょうか…。ちょっと分からないです。
hoshi-takanori

2021/01/06 19:56

ループを途中で終了させれば良いのですが、方法は 2 つあります。break と return です。 聞いたことありますか?
kt-

2021/01/06 19:58

少しだけならあります。しかしながら、どんなものかは知りません…。
hoshi-takanori

2021/01/06 20:03

それでは、break を使ってみましょうか。break はそこでループを抜けます。なので、  for (int i = from; i < to; i++) {   if (x[i] == a) {    System.out.println(i);    break; // ここでループを抜けて、   }  }  // ここに来る って感じで使います。これだとさっきの例で 2 の後に 3 は表示されますか?
kt-

2021/01/06 20:05

なるほど、これならされませんね。覚えておきます。
hoshi-takanori

2021/01/06 20:08

はい。 ところで、 int[] x = { 1, 1, 1, 1, 1 }; int a = 3; int from = 2; int to = 4; の場合は何をするんでしたっけ?
kt-

2021/01/06 20:10

toである、4を表示するようにします。
hoshi-takanori

2021/01/06 20:11

そのためには、さっきのコードをどう変えればいいですか?
kt-

2021/01/06 20:13

違うことを意味する記号は確か!=でしたから、(x[i]!=a)ですかね?
hoshi-takanori

2021/01/06 20:16

つまりこうでしょうか?  for (int i = from; i < to; i++) {   if (x[i] != a) { // == を != に変更    System.out.println(to); // i を to に変更    break;   }  }
kt-

2021/01/06 20:18

そうですね。そんな感じです。
kt-

2021/01/06 20:19

これをelse if とかを使って纏められないのでしょうか?
hoshi-takanori

2021/01/06 20:21

まとめる前に、このコードが何をするかを確認しましょう。 int[] x = { 1, 2, 4, 3, 5 }; (a, from, to は前と同じ) の場合、このコードは何をしますか?
kt-

2021/01/06 20:24

えっと、何をするのでしょうか…?ごめんなさい、分からないです。
kt-

2021/01/06 20:29

多分4を表示するのでしょうか?
hoshi-takanori

2021/01/06 20:30

コードの動きを 1 行ずつ見ていきましょう。まず、  for (int i = from; i < to; i++) { ですが、最初の繰り返しでは i = from, つまり i は 2 です。次に   if (x[i] != a) { // == を != に変更 この条件が成り立つかを考えます。x[i] つまり x[2] は 4 で、a は 3 です。!= なので、成り立ちますね。 ということで、if 文の中の処理を実行していきます。    System.out.println(to); // i を to に変更 to つまり 4 が表示されます。そして、    break; ここでループ終了です。 これは期待する結果ですか?
退会済みユーザー

退会済みユーザー

2021/01/06 20:30

お、あと一息ですね。 完成したらごkt-さんご自身で回答を作成し、是非とも完成形を披露してくださいね。 その際、ソースコードを<code>ボタンで挿入されるバッククオートで囲まれたブロックに貼るのをお忘れなく。
kt-

2021/01/06 20:33

そうですね、大分完成に近づいていっているような気がします。 しかし最後のreturnはどのように使うのでしょうか?
hoshi-takanori

2021/01/06 20:37

だいぶ近づきつつあるとはいえ、あと一息、だといいんですが…。 int[] x = { 1, 2, 4, 3, 5 }; の from 〜 to -1 つまり位置 2 〜 3 を見ると、x[3] は 3 ですから、求める結果は 3 のはずです。が、4 が表示されてしまいました。さて、何がいけなかったのでしょうか?
kt-

2021/01/06 20:40

うーん、分からないですね…。問題ないように見えますが…。
hoshi-takanori

2021/01/06 20:45

問題は、最初の 1 つが探しているものでなかった場合に、残りを全部無視して「ない」と結論づけてしまうことです。日常生活で何かを探すときも同様ですが、範囲内のものを全部見て、どれも探しているものではないことを確認しなければ、「ない」とは言えないですよね?
kt-

2021/01/06 20:47

なるほど、そういう問題があるのですか。確かにその例えは言い得て妙ですね。 この問題を打開するにはどうすればいいのでしょうか?
hoshi-takanori

2021/01/06 20:49

目的のものがある場合は、最初の 1 つを見つければそこで「ある」と結論が出ますが、「ない」という結論を出すには、全部調べ終わった後になります。そして、全部調べ終わるのは、さっきのコードで言うとどこになりますか?
kt-

2021/01/06 20:52

i < to;でしょうか?
hoshi-takanori

2021/01/06 20:55

i < to は条件なので、それが成り立つとき、または成り立たないとき、どちらでしょうか?
kt-

2021/01/06 20:56

成り立たないとき、ですかね?
hoshi-takanori

2021/01/06 20:58

ですね。for (int i = from; i < to; i++) の i < to のところはループ継続条件と言って、その条件が成り立つ間はループは回ります。そして、成り立たなくなったらどこに行きますか?
kt-

2021/01/06 21:00

toの数値を表示させるために、mainに行くのでしょうか?
hoshi-takanori

2021/01/06 21:05

最終的には main に戻りますが、それはちょっと先の話ですね。まず search メソッドを完成させる必要があります。現在、 public static int search(int[] x, int a, int from, int to) {  for (int i = from; i < to; i++) {   if (x[i] == a) {    System.out.println(i);    break;   }  }  // i < to が成り立たなくなったら、ループを抜けてここに来る } と言う状態です。さて、4 をどこで表示しますか?
kt-

2021/01/06 21:08 編集

breakの後のカッコの後ろにelseを置いて、使いそこで表示させるのでしょうか?
hoshi-takanori

2021/01/06 21:10

public static int search(int[] x, int a, int from, int to) {  for (int i = from; i < to; i++) {   if (x[i] == a) {    System.out.println(i);    break;   } else {    System.out.println(to);    break;   }  } } こうでしょうか。int[] x = { 1, 2, 4, 3, 5 }; の時に何が起こりますか?
kt-

2021/01/06 21:15

3になるのではありませんか?
hoshi-takanori

2021/01/06 21:16

残念ながら、さっきと同様に 4 になっちゃいます。3 になって欲しいんですけどね。
kt-

2021/01/06 21:17

何故なのでしょうか?
hoshi-takanori

2021/01/06 21:21

指定された範囲の中に求めるものが「ない」ことを判断できるのは、すべてを調べ終わった後、つまりループを抜けた後になります。なので、ひとつ前のコードで「// i < to が成り立たなくなったら、ループを抜けてここに来る」と書いたところしかありません。が、そこには落とし穴がありまして…。
kt-

2021/01/06 21:22

落とし穴とは何なのでしょうか?
hoshi-takanori

2021/01/06 21:25

条件 x[i] == a が成立、つまり a が見つかった時、i を表示して break してますが、break した場合もループを途中で抜けて同じところに来ます。ので、そこで to を表示すると、見つかった場合も to が表示されちゃいます。
kt-

2021/01/06 21:27

では、どうすればそのような事が起きずに済むのでしょうか?
hoshi-takanori

2021/01/06 21:30

そこで return の出番になります。break はループを抜けてループの次から処理を続けますが、return はメソッドから抜けます。つまり、break の代わりに return と書くと、search メソッドはそこで終わって、main に戻ります。ので、ループの後に to を表示するコードを書いた場合、ループをすべて回り終わって、見つからなかったときだけ to を表示させることができます。
kt-

2021/01/06 21:32

なるほど!知らなかったです!今後の参考にさせていただきます。 となると、2回目のbreakをreturnに変えればいいのですか?
hoshi-takanori

2021/01/06 21:37 編集

えっと、そもそも break が 2 つあるコードは失敗作なので、忘れてください。そのひとつ前のコード (06:05 のもの) をもとに話しています。
hoshi-takanori

2021/01/06 21:39

そして、return のもう一つの役割、つまり「戻り値」について話す必要がありますが、そろそろ時間がなくなってきました。
kt-

2021/01/06 21:42 編集

分かりました!どうやらそちらの都合もあるようですので、手短で簡単にお願いします。
hoshi-takanori

2021/01/06 21:50

そうですね。今まで search メソッドの中で System.out.println してましたが、search は a の位置を表示するのではなく、戻り値とするメソッドです。つまり、search メソッドの中で System.out.println してはいけません。
kt-

2021/01/06 21:57

どういうことでしょうか?
hoshi-takanori

2021/01/06 22:00

System.out.println の代わりに、今まで表示していた値を戻り値として return しましょう。書き方は retun; ではなく、return 戻り値; と書きます。return; は手ぶらで帰る感じですが、return 戻り値; はお土産を持って帰る感じでしょうか。 メソッドを呼び出した側は、戻り値を受け取ることができます。方法は、 int z = search(引数); System.out.println(x); のようにいったん変数に代入して使うか、または System.out.println(search(引数)); のように直接別のメソッドの引数にすることもできます。 だいぶ駆け足になりましたが、とりあえずこの辺で。今までに説明したことをもとに、ご自分で search メソッドを書いてみることをお勧めします。
退会済みユーザー

退会済みユーザー

2021/01/06 22:00

kt-さん、この勢いで完成させたいのであれば、8:00までならお手伝いできます。 時間or体力or気力が尽きたのであれば、kt-さんの都合いいタイミングで「再開」って感じのコメントいただければ、PC前に戻り次第来ます。 個人的には一旦中断して、hoshi-takanoriさんとのやり取りを振り返り、消化する時間を設けるのもアリかと思います。
kt-

2021/01/06 22:06

なるほど、よく分かりました。hoshi-takanori様、長時間にわたりご教授いただきましてありがとうございました! こんな未熟者にここまで付き合っていただき感謝でいっぱいです! ありがとうございました!
kt-

2021/01/06 22:31 編集

m-ogura様、ありがとうございます。 今しがた出来上がりました。 完成形をアップします。 初心者の私がこんなプログラムを書くことが出来て感激でした。 本当にありがとうございました。そして多大な迷惑をかけて深くお詫び申し上げます。
退会済みユーザー

退会済みユーザー

2021/01/06 22:27

まずお願いですが、インデントされてないコードは非常に読みづらいので、修正する都度、質問を編集していただきたいです。 なお、コードは入力欄の上にある<code>をクリックすると挿入される、バッククオートで囲まれたブロック内に貼ってください。 さて本題ですが、当初の目的は達成されています! あとは、2行の不要なロジックの削除と変数名の調整です。 変数名は「その変数が何を格納しているのか」が一目瞭然である必要があります。 恐らくテキストの変数名をそのまま記述しているのだと推測しますが、私は自分がコーディングしたとしても、1年後には「あれ?変数aって何が入るんだっけ???」ってなる自信があります。
退会済みユーザー

退会済みユーザー

2021/01/06 22:28

あ、不要な行は2行じゃなくて3行でした・・・。
退会済みユーザー

退会済みユーザー

2021/01/06 22:33

残り時間が30分を切りましたね・・・変数名はさておき、不要な3行の削除をもって一旦完成としましょうか。
kt-

2021/01/06 22:42

はい!分かりました。完成形をアップします。形式は追記の通りでよろしいですよね? さて、m-ogura様、私のお手伝いという苦労をかけてしまい申し訳ございません。 hoshi-takanori様、お忙しい中私に付き合っていただき申し訳ございません。 しかし、お陰で目的を達成する事が出来ました。プログラミングは一人ではできないという事と、自力で考える大切さを知ることができました。この経験を今後の糧にしていきたいと思います。 本当にありがとうございました。心より感謝申し上げます。
退会済みユーザー

退会済みユーザー

2021/01/06 22:52

やりましたね!お疲れ様でした!! あとは(できれば)変数名とインデントの調整を行ってください。 可読性は保守の際に非常に重要ですので。 最後になりますが、ご自身で完成形を回答とし、ベストアンサーにして質問を解決済にしてくださいね。
退会済みユーザー

退会済みユーザー

2021/01/06 22:59

ちなみにですが、極言すると、全てのプログラムは「分岐」と「繰り返し」のみで実装できます。 kt-さんは「分岐」のifと「繰り返し」のforをマスターしたので、プログラマーとしてのスタートを切ることができました。 あとは「必要最小限のコードしか書かないこと」「いかに読みやすいコードを書けるか」を、常に意識してください。 本当に、お疲れ様でした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問