java 同在默认包中的不同类 第一个类用数组取的txt文件字符串 第二个类引用这个数组时始终为空值,如何解决
import java.io.*;
/*(第2个类中引用的数组在第一个类中都设为了public static,且在第一个类中用println可以输出每个数组,但是第二个类引用时,println输出值始终为空或者0)注意,是在同一包中的不同的类文件引用,而不是同一个类文件中的不同类引用,请高手们指点下,偶是菜鸟,谢谢啦*/
public class tt {
public static float [][] sdis= new float[20][20];
public static void main(String[] args) throws IOException {
{
try{ int i=0;
FileReader frd=new FileReader("c:\\111\\dist.txt");
BufferedReader brd=new BufferedReader(frd);
String ligned;
ligned=brd.readLine();
while(ligned!=null){
String[] sNumberd=ligned.split(" ");
for(int j=0;j<sNumberd.length;j++){
sdis[i][j]=Float.parseFloat(sNumberd[j]);
System.out.println(sdis[i][j]);
}
System.out.println(i+"*******************");
ligned=brd.readLine();
i++;
}
brd.close();
frd.close();
}catch(IOException Ie){
System.out.println("sorry");
Ie.printStackTrace();
}
}
//下面是另一个类
import java.util.*;
import java.io.*;
public class rr{
public static void main(String[] args){
System.out.println(tt.sdis[1]);
}}
--------------------编程问答-------------------- 楼主的 tt类(以后首字母要大写)变量sdis 的赋值是在main()函数里的,不调用miain()函数,sdis就是默认值。
要想得到内容,应先调用main()函数。
tt.main();
然后再看。 --------------------编程问答-------------------- 。。。这个程序暴强,用eclipse 都format 不了 --------------------编程问答-------------------- import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class TT {
public static float[][] sdis = new float[10][10];
static {
try {
int i = 0;
File file = new File("D:\\test.txt");
FileReader filereader = new FileReader(file);
BufferedReader brd = new BufferedReader(filereader);
String ligned;
ligned = brd.readLine();
while (ligned != null) {
String[] sNumberd = ligned.split(" ");
for (int j = 0; j < sNumberd.length; j++) {
sdis[i][j] = Float.parseFloat(sNumberd[j]);
System.out.println(sdis[i][j]);
}
System.out.println(i + "*******************");
ligned = brd.readLine();
i++;
}
brd.close();
filereader.close();
} catch (IOException e) {
System.out.println("sorry");
e.printStackTrace();
}
}
}
public class RR {
public static void main(String[] args) {
for(int i=0;i<TT.sdis.length;i++){
for(int j=0;j<TT.sdis[i].length;j++){
System.out.print(TT.sdis[i][j]+"、");
}
System.out.println();
}
}
} --------------------编程问答-------------------- java程序不是这样的,数组的赋值居然在main()方法了,别的类根本调用根本不会允许TT的main()怎么赋值?。文件的操作也有点小问题 --------------------编程问答--------------------
++;
把tt 类里主函数里面内容放到一个普通函数里面去,把主函数删除,因为是被调用类,所以不需要主函数
,
public class rr{
public static void main(String[] args){
new tt().hanshu();//hanshu()里的内容就是tt主函数里面的内容;
for(int i=0;i<TT.sdis.length;i++){
for(int j=0;j<TT.sdis[i].length;j++){
System.out.print(TT.sdis[i][j]+"、");
}
System.out.println();
}
}}
补充:Java , Java SE