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

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

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

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

Q&A

解決済

4回答

569閲覧

for(int i = 0; 1< 2; i++)が無限ループされる

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2021/09/08 13:08

java

1public class Main{ 2 public static void main(String[] args){ 3 for(int i = 0; 1< 2; i++){ 4 System.out.println(i); 5 } 6 } 7}

上記コードを実行したら無限に実行されました。
1回for文が実行されるたびにi++も実行され数字が1から2、2から3と増えていき 1< 2; の条件が成立しないと
思ったのですが、無限にループされる理由がわからなないのですが、教えて頂きたいです。

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

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

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

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

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

1T2R3M4

2021/09/08 13:11

1< 2 だからです。
m.ts10806

2021/09/08 19:51

iと1の見分けはついてますか?
guest

回答4

0

ベストアンサー

おそらく、1と書いてある部分が、繰り返しが進むにつれて2,3と勝手に変わる、みたいなイメージを持っているのではないかと想像します。残念ながら、そんなことにはなりません

変化する値を覚えておくためには、変数を使います。for文の()内の冒頭にint i = 0;と書いてありますね。変数iが宣言されて、初期値として0が設定されています。

for文の()内の末尾に書いてあるi++によって、{}内の処理を一回実行した後に、変数iの値が1増えます。

ということは、for文の()の真ん中に書くべき条件は、「変数iの値が2より小さい」であって、「12より小さい」ではありません。1 < 2という条件式は常に成立するため、質問者のコードでは無限ループが発生しています。

投稿2021/09/08 13:46

Daregada

総合スコア11990

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

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

0

1< 2
が常にTrueだから。

投稿2021/09/08 13:13

1T2R3M4

総合スコア114

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

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

0

そのfor文の条件部が 1< 2となってますよ
これでは終わりません

投稿2021/09/08 13:12

y_waiwai

総合スコア87800

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

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

0

おそらく、スペルミスですね。
スペルミスでないなら、基礎が出来ていない事が原因でしょうね。

コードを読んでみましょう。

コードを読むコツは「一行レベルで、何をしているかを考えながら読む」です。

public class Main{ public static void main(String[] args){ // 変数iの初期値: 0, 1が2未満の間, iを+1 していきながらループ for(int i = 0; 1< 2; i++){ // iの値を表示する System.out.println(i); } } }

これを疑似コードとして切り出してみましょう。

1. 変数iの初期値: 0, 1が2未満の間, ループ 1.1. iの値を表示する

これを実際に手作業でシミュレーションしてみてください。

for文は範囲が鍵なので、数直線で考えてみるとわかりやすいです。

数直線を現実世界のノートとかに書いてみる。

そして、iの初期値は0ですね。ということで、0を含めた状態でチェックします。

さらに上限も見付けないといけませんね。

で、条件式はなんでしょうか。1 < 2 ですね。

1 < 2 が満たされている間、ループします。

まず、i = 0 のとき、

i = 0, 1 < 2 を満たすので、(1.1)を処理します。
で、i++ で i = 1 へ。

i = 1 のとき、

i = 1, 1 < 2 を満たすので、(1.1)を処理します。
で、i++ で i = 2 へ。

i = 2 のとき、

...

と言う風にループしていきます。

ですが、1 < 2 はいつまでたっても、false (つまり偽) になりません。

よって無限ループの出来上がりです。

だって、「辞め時」がわからないから。

おそらく、i と 1 を間違えただけ(と思いたい…)じゃないかなと。

投稿2021/09/08 13:42

BeatStar

総合スコア4958

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問