Java勉強中の超初心者です。
ちょっと前に同じ質問をしたのですが、前回の回答をよく見たら
趣旨とは違った処理をしていたのでもう一度、質問をさせて下さい。
ArrayListを使った九九の表を作成します。
この時に、九九の計算結果を一旦、Stringの配列に格納してから、
ArrayListから値を出力します。
この時にArrayListに格納してから出力するソースは書くことが
できたのですが、一旦、格段はString[]s = new String[9];として
Stringの配列に格納してから、ArrayListにまとめて出力する方法
をご教授お願いできますか?
-----------------------------------------------------------
ArrayList list = new ArrayList();
//ここにString[]s = new String[9];が入ります。
for(int i = 1; i <= 9; i++ ){
for(int j = 1; j <= 9; j++){
list.add(i*j);
System.out.print(list.get(list.size() - 1) + " ");
if((list.size() - 1) % 9 == 8 && (list.size() - 1) != 0){
System.out.println("");
}
}
}
----------------------------------------------------------
上記のソースを元に作成できたらと、思います。
No.11ベストアンサー
- 回答日時:
No2のbraver_2004です
すぐ回答を見ていないということで・・・。
No2で書いた処理をコードにしました。
JavaのVersionは1.4.2です。
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
ArrayList al = new ArrayList(); //ArrayListをnew
for (int i = 0;i<9 ;i++){ // ループ1
String[] s = new String[9]; // i段用の配列をnew (ループ外でnewすると全て9段での出力になってしまいます)
for (int j=0;j<9 ;j++){ // ループ2
s[j] = String.valueOf((i+1)*(j+1)); //計算結果を格納
}
al.add(s); // 格段の配列をListに格納
}
Iterator ite = al.iterator(); //Iteratorの取得
String[] s2 ; // 取得用の配列の宣言
while(ite.hasNext()){ // Iteratorの要素がある分ループ
s2 = (String[])ite.next(); // Iteratorより取得
for(int k=0; k < s2.length;k++ ){ //取得した配列要素分ループ
System.out.print(s2[k]); //表示
System.out.print("\t"); //見易さのためTab区切りで表示しています。
}
System.out.println(""); //改行をします
}
}
}
実行結果
123456789
24681012141618
369121518212427
4812162024283236
51015202530354045
61218243036424854
71421283542495663
81624324048566472
91827364554637281
goo上ではtab区切りで見えませんが実行すればtab区切りに表示されるはずです。
No.10
- 回答日時:
No2です。
あの…。失礼ながら横槍を…。
当初の質問からそれているような気がします。
>九九の計算結果を一旦、Stringの配列に格納してから、
>ArrayListから値を出力します。
>一旦、格段はString[]s = new String[9];として
>Stringの配列に格納してから、ArrayListにまとめて出力する方法
>をご教授お願いできますか?
というのが要件だと思うのですが。
それに沿った形でNo2で詳細設計(適当ですが)したつもりなんですけど、質問者さんはこのとおりやってみたのですかね?
質問者様はソースでばっちり動く回答を望みなのでしょうか。それならばソースを書きますが。
勉強の為ならばヒントだけで、ソースを回答するのはあまりよろしくないかな、と思いまして…。
ちなみにIteratorは使用しなくてもしても問題ないです。No5さまのようなgetメソッドでも十分です。しかし、せっかくListを使用するなら、と思い紹介しました。
この回答への補足
ご意見ありがとうございます。
確かに反れていますね・・・
私もbraver_2004の回答を元に
考えていたところに、親切なご回答者さん
がソースを記述していただいたので
参考にさせていただきました。
>ソースでばっちり動く回答を望みなのでしょうか。
確かにその回答は欲しいのですが、なるべく
自分で簡単なフローチャートを書いて、
考えながら勉強しています。
なので、すぐには回答は見てませんよ!
アドバイスありがとうございます。
No.9
- 回答日時:
No.1さんが書いていますが、Stringの配列を用意しているならArrayListは必要ありませんよね。
String ret[]=new String[9];
for(int i=1;i<=9;i++)
{
ret[i-1]=Integer.toString(i*1); //初期化ついでにはじめの値を代入しておく
for(int j=2;j<=9;j++)
{
ret[i-1]+=" "+Integer.toString(i*j);
}
}
for(int i=0;i<ret.length;i++)
{
System.out.println(ret[i]);
}
と書けばArrayListは使わなくてよいです。「ArrayListにStringを格納していた」→「String配列に格納した」という変化をまず理解しましょう。
No.7
- 回答日時:
ANo5です。
String[] str = new String[9];
とした場合は途中で
str[i - 1] = top;
としてください。前の解凍でstr[0]が無駄になっていました。
No.6
- 回答日時:
>>String[] str = new String[10];
>ここでなぜ配列を10個作っているのか
>教えていただけますか?
おそらく、
1の段はstr[1]に
2の段はstr[2]に
と
「nの段」の「n」と「String配列strのインデックス」を合わせるため
だと思いますよ。
あくまでも「おそらく」ですが。
No.5
- 回答日時:
こんなので好いんでしょうか?
import java.util.*;
class Editor002 {
public static void main(String args[]){
ArrayList list = new ArrayList();
String[] str = new String[10];
for(int i = 1; i <= 9; i++ ){
String top ="";
for(int j = 1; j <= 9; j++ ){
top = top + String.valueOf(" " + (i * j));
str[i] = top;
}
}
for(int m = 1; m <= 9; m++ ){
list.add(str[m]);
}
for(int k = 0; k <list.size(); k++ ){
System.out.println(list.get(k));
}
}
}
この回答への補足
詳しいご回答ありがとうございます。
>String[] str = new String[10];
ここでなぜ配列を10個作っているのか
教えていただけますか?
よろしくお願いします。
No.4
- 回答日時:
なるほど。
失礼しました。String s = i * j;
とするとコンパイルエラーになってしまう。
ということですね?
ちょっと変則的かもしれませんが、
String s ="" + 2 * 3;
s = s + 5 * 5;
こんなことができます。
Iteratorの方は何がどうつまづいているのか分からないので
状況の補足をお願いします。
No.3
- 回答日時:
String配列に値(文字列)を入れるには
String[] hoge = new String[9];
hoge[0] = "文字列";
ですよ。
とりあえず、「配列」の基本を勉強した方が良いと思います。
この回答への補足
ご回答ありがとうございます。
私が迷ったのはString配列にint型の計算結果を
代入する方法がわかりませんでした。
決して配列がわからないのではないのですが・・・
今は、
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ArrayList list = new ArrayList();
String[]s = new String[9];
for(int i = 0; i<= 8; i++){
for(int j = 1; j<=9; j++){
s[i]= String.valueOf(i*j);
}
list.add(s);
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Iteratorでの取得を勉強中です。
ちょっとそこでつまづいていますので
アドバイスをいただけたら幸いです。
よろしくお願いします。
No.2
- 回答日時:
文章を見る限りですと
格納してから格納したものを表示する
と見受けられます。
でも今のロジックだと格納しながら表示してますよね。
それをまず分離しましょう。そうすればきっと頭も整理されるのではないですか?
処理の流れは以下のようになるのかな。
ArrayListをnewします
ループ1 1段から9段までのループ (i)
i段用のString配列を[9]newします
ループ2 i段での1~9までのループ (j)
String[j]にi*jの結果を格納
ループ2終了
格納されたString配列をArrayListにaddする
ループ1終了
上記処理で格納処理が終了です。
次に格納された情報を出力しましょう。
格納したArrayListはListインターフェースを持っているのでIteratorを使用してみましょう
ArrayListよりIteratorを取得します
ループ1 iteratorの要素が存在するまでループ
iteratorより格納されている情報を取得(String配列を取得)します
ループ2 String配列の要素数分ループ(k)
画面に出力 String[k]
ループ2終了
改行を出力
ループ1終了
あえてソースで書きませんでした。
人それぞれでしょうが、プログラミングで詰まった時はこのように日本語で整理することも一つのアプローチになるかと思われます。
この回答への補足
braver_2004さまご回答ありがとうございます。
>格納してから格納したものを表示する
>と見受けられます。
その通りでございます。
掛け算の結果をString[]sに格納するには
どうすればいいか悩んでいます。
braver_2004さまにご回答をしていただく前に
作成したソースが下記のソースになります。
------------------------------------------
ArrayList list = new ArrayList();
String[]s = new String[9];
String kekka = null;
for(int i = 1; i<= 9; i++){
for(int j = 1; j<=9; j++){
String kuku = i*j + " ";
kekka = kekka + String.valueOf(kuku) + " ";
----------------------------------------------------
ちなみに実行結果は
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
以下省略
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
となるのが理想です。
ご教授お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
配列の中に複数存在する数がい...
-
ページング
-
配列をセッションに割り当てた後で
-
JAVAで配列の要素に、負の値が...
-
【Ajax通信&Java】配列の受け取...
-
2次元リスト
-
同じ文字を探しカウントしたい
-
ランダムでのboolean値の与え方
-
jspでの二次元配列
-
Javaで文字と数字が混ざったも...
-
『args[]』とは?
-
C言語でunsigned char配列を連...
-
配列で、値の入っている要素数...
-
大きさがわからない配列
-
セッションを使ったint型の値の...
-
動的配列確保
-
javamailで複数人にメールを送...
-
配列を大きい順にソートしたい...
-
java 大文字と小文字を入れ替える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページング
-
java
-
配列をセッションに割り当てた後で
-
この警告はどうすれば?
-
Javaで文字と数字が混ざったも...
-
javaで大容量テキストファイル...
-
セッションを使ったint型の値の...
-
C言語でunsigned char配列を連...
-
配列の中に複数存在する数がい...
-
Javaで文字を漢字であるか否か...
-
[Ljava.lang.Stringってなんですか
-
ArrayListからBean配列に値をセ...
-
C#で動的配列Listの中身をListB...
-
【C#】ハッシュテーブル(連想...
-
csvファイルを2次元配列に格納
-
配列で、値の入っている要素数...
-
『args[]』とは?
-
【Ajax通信&Java】配列の受け取...
-
データベースから取得したデー...
-
n番目に大きな値を探索する
おすすめ情報