我在处理中有一些代码,它读取CSV文件并将其转储到数组中。然后我需要在各种方法中使用这些数据来绘制一些令人兴奋的图形。
但是在下面的代码中当我尝试运行字形方法时,我得到一个异常,程序无法找到任何名为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])
}
答案 0 :(得分:1)
这是一个范围问题。阅读变量范围。
一种解决方案是您可以在全局空间中声明变量。现在它们在setup()函数中声明,并且一旦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])
}
答案 1 :(得分: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);
}
}