![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
[長文失礼致します]Java入門者の者です。学校の担当講師から、「整数を要素とする配列リスト L に、キーインした複数の整数値を順に格納する。
このあと、L のすべての要素を逆順に表示し、直後にLのすべての要素を正順に
表示するプログラムを作れ。
例えば、10,15,20,..,45,50 とキーインしたとき、入力完了後に
50,45,..,20,15,10,10,15,20,..,45,50
と表示されるはずである。」
という問題が課され、全然分からずに非常に困って居ます。
一応習ったばかりのinsertメソッド?と呼ばれるメソッドで以下の様なプログラムを書いたのですが、全く実行されませんでした。
package saishuukadai01;
import java.util.Scanner;
class list {//配列リスト
static final int MAX =100;
int N ;
int[]value = {10,15,20,25,30};
list(){N=0;value=new int[MAX];
}
int insert(int k,int val) {//insertメソッド。学校の資料に掲載されてる内容をそのままコピペしただけです。
int k1;
for(k1=N-1;k1>=k;k1--) {
value[k1+1]=value[k1];
}
value[k]=val;
return -1;}
}
public class saishuukadai01 {//アプリ
public static void main(String[] args) {
Scanner stdin =new Scanner (System.in);
list S = new list();
int val;
for(val=0;val<100
;val++) {
S.insert(0,val);
}
System.out.println(S);
}
}
各行ごとに自分なりの解釈を踏まえて説明すると、、、
1 パッケージ
2 キーボード入力
3 配列リストclassの作成
4 整数intの上限がMAX=100である事を表示
5 整数の配列 valueを作る
6 コンストラクタ?(ここもよく分からないのですが、配列リストclassにリストを作成という事でしょうか。)
9〜16 インサートメソッド。後のアプリでインサートを使用する為に予めその内部構造を記した、所謂、「関数」という解釈であってますでしょうか?
17 アプリのクラス
19いつもの定型コード。mainメソッド。
20キーボード入力?これも何を言ってるかよく分からないです。が、いつもの文章…
21配列リストSをnew list()として新しく作成
22 型名 整数変数 (変数valを宣言)
★23 valが0から100未満の間、配列リストSの0番目の前にvalを次々に挿入。つまり、10.15.20.25.30という配列があるとすれば、10から順に0番目の前に挿入されて行くので、30.25.20.15.10と逆順挿入される筈。
26 23で行われた後の配列リストSを表示する。
となり、実行されない原因は、やはり23行目のfor文が間違っているのと、上の配列リストclassと下のアプリが全く連動・連結されてない事だと思っています。
どの様なfor文を作れば、配列リストクラスで作った配列を操作する事が出来るのでしょうか?
また、配列リストclassとアプリが連動・連結されてない原因は何故でしょうか?…
どの様にすれば解決出来るのでしょうか?
また、不明な点が有ればご指摘・訂正して頂ける非常に幸いです。
以上の事について、どなたか分かる方教えて下さい。
何卒よろしくお願い致しますm(_ _)m
![「[長文失礼致します]Java入門者の者で」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/1/543008621_5f198d9d95697/M.jpg)
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
どこからどこまでが、あなたが作成したコードですか?
insertメソッドは改変してもいいですか?
まず、『listクラス』で『N』を全く用いていないのは、気になりませんか?なんの変数ですか?
おそらく、配列の『要素数』なので、要素を追加するたびに1増やしましょう。
つまり、insertの末尾に『N++;』を挿入しましょう。
6行目の『value = {...};』は何ですか?『value = new int[MAX];』で、内容が上書きされていますが大丈夫ですか?
『System.out.println(S);』は何がしたいのですか?
これで、リストの要素を表示したつもりですか?
リストの内容を表示させたいなら、『listクラス』に『print();』メソッド(名前はなんでも良い)を加えましょう。
例えばこんな感じ、
void print() {
// 添字0から順番に配列の要素を表示
for (int i = 0; i < N; i++)
System.out.print(value[i] + " ");
// 逆順で配列の要素を表示
for (int i = N-1; 0 <= i; i--)
System.out.print(value[i] + " ");
// 末尾で改行
System.out.println();
}
最後に、表記に関して。
1. クラス名は大文字始まりが望ましいです。list -> ListとかMyList また renshuu01 -> Renshuu01
2. ローマ字も望ましくありません。renshuu01(学校指定の表記は仕方がないですが、)
3. 画像を見るからにインデント、改行がグチャグチャです。
・2行目と3行目の間は改行する方が良い。
・7行目、なんでそうなった?
『{』中カッコの後は改行しましょう。
『;』セミコロンの後も改行しましょう。非常に読みにくいです。
・10行目〜15行目、インデントが浅い。タブかスペースの数を統一しましょう。
・15行目、『}』中カッコは改行して入れましょう。(スコープが分かりにくいし、末尾にコードを挿入しづらい)
・16行目と17行目の間も改行を入れた方が良い。
・24行目、なぜそこに改行を入れた?意味不明な改行は止めましょう。
・29行目、インデントが揃っていない。揃えましょう。
初心者にありがちですが、行数を減らすために可読性を落としてしまっています。
『行数を増やしてでも、コメントや改行で可読性を良くしましょう』
表記は、コードの可読性に関する問題で、アルゴリズムを指摘しているわけではありませんし、エラーにもなりませんが極力読みやすいものが望ましいです。
自分が後で見たときに、困りますし、このように教えてもらうときに時間を浪費してしまいます。
No.1
- 回答日時:
>int[]value = {10,15,20,25,30};
この配列valueを順に出力するだけのプログラムを考えると、例えばこうなります:
https://ideone.com/ay1BIn
これをもとに配列の添え字で参照が分かっていれば、逆順に出力するよう変更できると思います。
あとは、キーイン(データの入力)のコードが書ければ、完成できるかと。
Javaに限りませんが、データがどのように入っていて、それをどう出力すればよいかが思いつかないとプログラミングは大変だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Java Java 配列<選挙> 4 2023/07/31 15:07
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaでのプログラム(配列)につ...
-
配列をセッションに割り当てた後で
-
ArrayListからBean配列に値をセ...
-
ArrayListを使った多次元配列の...
-
無名配列の作成方法について質問
-
ページング
-
配列の中に複数存在する数がい...
-
0から99の数字をランダムに...
-
char string[100]; int c, i=0;...
-
Javaで文字を漢字であるか否か...
-
[Ljava.lang.Stringってなんですか
-
java 大文字と小文字を入れ替える
-
じゃんけんプログラムとアルゴ...
-
配列で、値の入っている要素数...
-
javaのプログラミング(英語)
-
javaでデータベース(mysql)か...
-
javaの乱数生成プログラム-バグ...
-
javaについて
-
strutsでArrayListの中の配列の...
-
Strutsで動的Formへの対応
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
n番目に大きな値を探索する
-
この警告はどうすれば?
-
[Ljava.lang.Stringってなんですか
-
Javaで文字を漢字であるか否か...
-
配列をセッションに割り当てた後で
-
配列の中に複数存在する数がい...
-
java
-
Javaで文字と数字が混ざったも...
-
C#で動的配列Listの中身をListB...
-
配列で、値の入っている要素数...
-
『args[]』とは?
-
【C#】ハッシュテーブル(連想...
-
ページング
-
セッションを使ったint型の値の...
-
配列について
-
同じ配列またはクラスを、2回...
-
ArrayListからBean配列に値をセ...
-
Java配列の問題を教えてくださ...
-
java 大文字と小文字を入れ替える
-
同じ文字を探しカウントしたい
おすすめ情報