例えば配列を前からならこのようになるはずです
class TestIntArray {
public static void main(String args[]) {
int vi[] = {0, 1, 2, 3, 4, 5, 6};
for (int i = 0; i < vi.length; i++)
System.out.println("vi[" + i + "] = " + vi[i]);
}
ですが逆に配列を後ろからならどうしたらいいのでしょうか?
今回の場合は6543210を出力させるのが目的です
今までずっと配列って言ったら for (int i = 0; i < vi.length; i++)がほぼ定形分ように頭にはいっていますので考え方がわからないです。
ヒントやアドレスをお願いします。
No.3ベストアンサー
- 回答日時:
問題文の配列を先頭から末尾まで順に走査する場合,
System.out.println(vi[0]);
System.out.println(vi[1]);
System.out.println(vi[2]);
System.out.println(vi[3]);
System.out.println(vi[4]);
System.out.println(vi[5]);
System.out.println(vi[6]);
と7行ひたすら並べて書くこともできるのだけれど,そこに
次の★のような繰り返しパターンを見て取ることができるから,
System.out.println(vi[0]); ★初期値i=0から
System.out.println(vi[1]); ★増分i++して
System.out.println(vi[2]); ★増分i++して
System.out.println(vi[3]); ★増分i++して
System.out.println(vi[4]); ★増分i++して
System.out.println(vi[5]); ★増分i++して
System.out.println(vi[6]); ★増分i++して
★ループ継続条件 i<7 の間だけループし続ける。
次のfor文に置き換えたわけです。
(注:配列viの長さ vi.length は7ですから)
for (int i = 0; i < vi.length; i++) {
----------------------------------------
同様に,問題文の配列を末尾から先頭まで逆に走査する場合,
System.out.println(vi[6]);
System.out.println(vi[5]);
System.out.println(vi[4]);
System.out.println(vi[3]);
System.out.println(vi[2]);
System.out.println(vi[1]);
System.out.println(vi[0]);
と7行ひたすら並べて書くこともできるのだけれど,そこに
次の★のような繰り返しパターンを見て取ることができるから,
System.out.println(vi[6]); ★初期値i=6から
System.out.println(vi[5]); ★増分i--して
System.out.println(vi[4]); ★増分i--して
System.out.println(vi[3]); ★増分i--して
System.out.println(vi[2]); ★増分i--して
System.out.println(vi[1]); ★増分i--して
System.out.println(vi[0]); ★増分i--して
★ループ継続条件 i≧0 の間だけループし続ける。
次のfor文に置き換えられます。
(注:vi.length-1 は 7-1=6ですから)
for (int i = vi.length - 1; i >= 0; i--) {
No.5
- 回答日時:
>今までずっと配列って言ったら for (int i = 0; i < vi.length; i++)がほぼ定形分ように頭にはいっていますので考え方がわからないです。
結局のところは for文が何をやってるのかわかってないって事でしょ?
参考書を調べるなりしてfor文がどういうものなのか自分で調べて理解した方がいいと思いますよ。
いやfor文と言ったら
for(初期化; 繰り返し条件; カウントアップorカウントダウン){
}
と理解して
配列なら
int vi[] = {0, 1, 2, 3, 4, 5, 6};
for(int i=0 i<a.length; i+++){
}
i=0 iが配列0,1,2,3,4,5という長さより小さいときがiをカウントアップ
i=1 以下同じ
i=2 以下同じ
i=3 以下同じ
i=4 以下同じ
i=5 以下同じ
i=6 以下同じ
i=7で繰り返し条件がfalseになりfor文が抜けると理解しています。
今までじゃー逆に配列を後ろから数えるという考え、その演習問題、発想がなく質問しました。
No.4
- 回答日時:
>for (int i = 0; i < vi.length; i++)
上記の一行を書き換えるだけで可能ですよ。
for (int i = vi.length - 1; i > 0; i--)
こんな感じに書き換えるだけで配列を後ろから参照するようになります。
他にも方法はありますが、この方法が一番簡単かな。
>理解の為説明してもらえますか?
i = vi.length - 1:ループの開始位置
i > 0:ループの終了条件
i--:iの値の増減値
前述の内容に書き換えた場合、i=6からスタートして、i>0という条件を満たしている間ずっとi=i-1を繰り返しながらループするって感じになります。
ちなみに、ループの開始位置がvi.length - 1になるのは、配列の各要素の格納番号というのは0から開始するので、要素の数が7個なら格納番号は0~6の7個になるからです。
No.2
- 回答日時:
申し訳ないです
逆転の発想です。
今回の質問で言うと
表示する配列のスタート地点はどこでしょうか
表示する配列のゴール地点はどこでしょうか
答えは
スタート地点が、7で
ゴールが、0です
ですので7スタートの0ゴールのコードを書けばいいんです
数字って、増えるばかりじゃないですよね
徐々に減らすこともできますし、倍にすることもできますし・・・
今回は7から0なので、減らします。
減らす方法はいろいろあるので考えてみるといいと思います。
説明になってるでしょうか・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- C言語・C++・C# 10人分の生徒の英語の点数{32,34,41,38,40,26,14,46,42,50} と数学の点 2 2022/05/26 21:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[JAVA]try 内の変数を外で!?
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
エクセルマクロ文で、赤文字セ...
-
JAVA 文字色変更
-
JAVAのDouble型の小数点以下の...
-
LC発振回路-ループ利得
-
java シンボルが見つかりません...
-
java Calendarクラス
-
VBS について
-
曜日の取得方法を教えて下さい!
-
(急募)JavaじゃんけんでGUI...
-
標準入力をするメソッドを作り...
-
System.out.println(new 文)て?
-
vb6 オブジェクトライブラリは...
-
配列を後ろから数えるには?
-
JAVAのエラーの意味が分かりま...
-
JSPでチェックボックスの最後を...
-
eclipse,mysql,javaエラー
-
JAVAでの占い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のポインターに関する警告
-
JSPやサーブレットでSystem.out...
-
[JAVA]try 内の変数を外で!?
-
JAVAのDouble型の小数点以下の...
-
EclipseでJava
-
JAVA 文字色変更
-
改行の判定方法
-
ファイル名に変数を使う(Java)
-
曜日の取得方法を教えて下さい!
-
java シンボルが見つかりません...
-
JAVAのエラーの意味が分かりま...
-
Javaでカレントディレクトリを...
-
エクセルマクロ文で、赤文字セ...
-
LC発振回路-ループ利得
-
Javaのコマンドライン引数を使...
-
nullcline
-
「続行するには何かキーを押し...
-
会員情報登録プログラムの作成...
-
文字列の引き算
-
Javaのプログラムがどうしても...
おすすめ情報