0

CSVファイルを読み込んで配列にダンプするコードが処理中です。次に、このデータをさまざまな方法で使用して、エキサイティングなグラフィックを描画する必要があります。

ただし、以下のコードでは、glyphメソッドを実行しようとすると、プログラムがDSAと呼ばれるものを見つけることができないという例外が発生します。誰かが私を正しい方向に向けることができますか?誰かが文字列を定義する前に「public」を置くべきだと私に言いましたが、それは別のエラー(予期しないトークン)を引き起こしました。

  void setup() {

  cp5 = new ControlP5(this);  
  cp5.addButton("Overview")
  .setValue(0)
  .setPosition(840, 10)
  .setSize(100, 19);

  cp5.addButton("Quadrant")
  .setValue(0)
  .setPosition(840, 30)
  .setSize(100, 19);

  cp5.addButton("Location Map")
  .setValue(0)
  .setPosition(840, 50)
  .setSize(100, 19);

String [][] DSA = readFile("DSA.csv");
String [][] NC = readFile("NC.csv");
String [][] IW = readFile("IW.csv");

  size(950, 600);
  smooth();
  //noStroke();
  //Use system font 'Arial' as the header font with 12 point type
  h1 = createFont("Arial", 12, false);
  //Use system font 'Arial' as the label font with 9 point type
  l1 = createFont("Arial", 9, false);

}
String [][] readFile(String fileName) {
  //for importing csv files into a 2d array
  //by che-wei wang

  String lines[] = loadStrings(fileName);
  String [][] csv;
  int csvWidth=0;

  //calculate max width of csv file
  for (int i=0; i < lines.length; i++) {
    String [] chars=split(lines[i], ',');
    if (chars.length>csvWidth) {
      csvWidth=chars.length;
    }
  }

  //create csv array based on # of rows and columns in csv file
  csv = new String [lines.length][csvWidth];

  //parse values into 2d array
  for (int i=0; i < lines.length; i++) {
    String [] temp = new String [lines.length];
    temp= split(lines[i], ',');
    for (int j=0; j < temp.length; j++) {
      csv[i][j]=temp[j];
    }
  }
  return csv;
}

void Gluph() {
    println(DSA[1][3])
}
4

2 に答える 2

1

これはスコーピングの問題です。変数のスコープについて読んでください。

1 つの解決策は、グローバル空間で変数を宣言することです。現在、それらは setup() 関数で宣言されており、setup() が終了すると、変数は setup() スコープ内で宣言されているため、他の関数で使用できなくなります。プログラムの最初の行で、setup() の前にそれらを宣言すると、グローバル スコープでそれらにアクセスできます。

セットアップ内でまだ readFile() が必要な場合は、変数をグローバル スコープで宣言し、setup() で値を割り当てます。変数はグローバル スコープで宣言されているため、setup() スコープの変更は、どこからアクセスしても反映されます。

String [][] DSA;
String [][] NC;
String [][] IW;   

void setup() {

  cp5 = new ControlP5(this);  
  cp5.addButton("Overview")
  .setValue(0)
  .setPosition(840, 10)
  .setSize(100, 19);

  cp5.addButton("Quadrant")
  .setValue(0)
  .setPosition(840, 30)
  .setSize(100, 19);

  cp5.addButton("Location Map")
  .setValue(0)
  .setPosition(840, 50)
  .setSize(100, 19);

  DSA = readFile("DSA.csv");
  NC = readFile("NC.csv");
  IW = readFile("IW.csv");

  size(950, 600);
  smooth();
  //noStroke();
  //Use system font 'Arial' as the header font with 12 point type
  h1 = createFont("Arial", 12, false);
  //Use system font 'Arial' as the label font with 9 point type
  l1 = createFont("Arial", 9, false);

}
String [][] readFile(String fileName) {
  //for importing csv files into a 2d array
  //by che-wei wang

  String lines[] = loadStrings(fileName);
  String [][] csv;
  int csvWidth=0;

  //calculate max width of csv file
  for (int i=0; i < lines.length; i++) {
    String [] chars=split(lines[i], ',');
    if (chars.length>csvWidth) {
      csvWidth=chars.length;
    }
  }

  //create csv array based on # of rows and columns in csv file
  csv = new String [lines.length][csvWidth];

  //parse values into 2d array
  for (int i=0; i < lines.length; i++) {
    String [] temp = new String [lines.length];
    temp= split(lines[i], ',');
    for (int j=0; j < temp.length; j++) {
      csv[i][j]=temp[j];
    }
  }
  return csv;
}

void Gluph() {
    println(DSA[1][3])
}
于 2012-11-29T21:14:00.277 に答える
0

DSA をクラス変数にします。ここにはクラス定義が表示されませんが、次のようになります。

class blah{
  String [][] DSA;

  void setup() {

  cp5 = new ControlP5(this);  
  cp5.addButton("Overview")
  .setValue(0)
  .setPosition(840, 10)
  .setSize(100, 19);

  cp5.addButton("Quadrant")
  .setValue(0)
  .setPosition(840, 30)
  .setSize(100, 19);

  cp5.addButton("Location Map")
  .setValue(0)
  .setPosition(840, 50)
  .setSize(100, 19);

  DSA = readFile("DSA.csv");
String [][] NC = readFile("NC.csv");
String [][] IW = readFile("IW.csv");

  size(950, 600);
  smooth();
  //noStroke();
  //Use system font 'Arial' as the header font with 12 point type
  h1 = createFont("Arial", 12, false);
  //Use system font 'Arial' as the label font with 9 point type
  l1 = createFont("Arial", 9, false);

}

}
于 2012-11-27T21:48:45.667 に答える