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

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

新規登録して質問してみよう
ただいま回答率
87.20%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

配列

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

受付中

同じクラスで異なるメソッド間で同じ配列を利用したい

ai..
ai..

総合スコア0

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

配列

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

3回答

0評価

0クリップ

179閲覧

投稿2021/11/23 20:07

前提・実現したいこと

javaで同じクラスで異なるメソッド間で同じ配列を利用したいのですが、方法が全く分からず、行き詰っています、、、。
状況としてはRectSample02というClassの中に、openとpaintというメソッドがありまして、openのメソッドで定義した配列をpaintで使いたいという状況です。
うまく配列を持ってくることができずエラーが出てしまいます。
超初心者なので初歩的な質問になるかもしれませんがよろしくお願いいたします。

発生している問題・エラーメッセージ

data を変数に解決できません

該当のソースコード

JAva

package Sample2; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class RectSample02 extends JFrame { private static final long serialVersionUID = 1L; public RectSample02() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // メニュー作成 JMenuBar mb = new JMenuBar(); JMenu m = new JMenu("ファイル(F)"); m.setMnemonic('F'); JMenuItem item1 = new JMenuItem("開く(O)"); item1.setMnemonic('O'); // メニューを選んだ時の動作を設定 item1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { open(); } }); m.add(item1); mb.add(m); setJMenuBar(mb); // フレームを表示 setVisible(true); } // ファイル選択ダイアログを表示し、選択したファイルをラベルに設定 // するメソッドを呼び出す private void open() { BufferedReader br = null; JFileChooser chooser = new JFileChooser(); //デフォルトの選択ファイルを指定 chooser.setSelectedFile(new File("C:/CSV1/csv1/0501C.csv")); //ダイアログを表示 chooser.showOpenDialog(null); //ダイアログの選択結果を取得 File file = chooser.getSelectedFile(); if(file != null) { System.out.println("選択したファイルを含んだフルパス:" + file.getPath()); System.out.println("選択したファイルのあるディレクトリ(フォルダ):" + file.getParent()); System.out.println("選択したファイルのファイル名:" + file.getName()); }else { System.out.println("選択してくれなかったよ(TT)"); } // データの最大個数 final int MAX_DATA_NUMS = 1700; // データを格納する2次元配列 String[][] data = new String[MAX_DATA_NUMS][]; try { br = new BufferedReader(new FileReader(file)); // readLineで一行ずつ読み込む int index = 0; String line; while ((line = br.readLine()) != null) { // lineをカンマで分割し、配列dataに保持 data[index] = line.split(","); index++; } // catch-finally部分は同様なので省略 } catch (Exception e1) { System.out.println(e1.getMessage()); } finally { try { br.close(); } catch (Exception e1) { System.out.println(e1.getMessage()); } } // 配列に格納したデータを表示(データ間にスペース) for (int i = 0; i < MAX_DATA_NUMS; i++) { // データがなくなったら終了 if (data[i] == null) break; for (int j = 0; j < data[i].length; j++) { System.out.print(data[i][j] + " "); } System.out.println(); } } public void paint(Graphics g){ super.paint(g); //コンテナのサイズ //縦幅 int WSIZE = 10; //横幅 int HSIZE = 20; int a =0; int px=0,py=0; int x=0,y=0; g.setColor(Color.WHITE); g.fillRect(0, 60, 1300, 900); for(int i=0; i<0; i++) { String d3=data[i][4]; int r3=Integer.parseInt(d3); if(r3==1) { g.setColor(Color.RED); }if(r3==2) { g.setColor(Color.BLUE); }if(r3==3) { g.setColor(Color.YELLOW); } String d2=data[i][3]; int r2=Integer.parseInt(d2); x=350-10*(10-r2); px = -2*x+1200; String d=data[i][2]; int r=Integer.parseInt(d); y=325-5*(60-r); py = 2*y; g.fillRect(px, py, 20, 10); } //蔵置場所描写 g.setColor(Color.black); for(a=0; a<59; a++) { g.drawLine(500,WSIZE*a+80,WSIZE*20+500,WSIZE*a+80); // 横線 } for(a=0; a<11; a++) { g.drawLine(HSIZE*a+500,80,HSIZE*a+500,HSIZE*32+20); // 縦線 } } public static void main(String[] args) { JFrame f = new RectSample02(); f.setTitle("コンテナヤードサンプル"); f.setSize(1300,900); f.setBackground(Color.WHITE); f.setVisible(true); } }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

m.ts10806

2021/11/23 20:09

インデントがグチャっとしていてコードが読みづらいかと思います。 調整してください。(可能ならコードフォーマット機能のあるエディタ利用を)

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Java

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

配列

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