【问题标题】:declare array to use it outside whileloop声明数组以在 while 循环外使用它
【发布时间】:2016-03-18 08:35:02
【问题描述】:
public void ReadCVS() {
    BufferedReader br = null;
    String line = "";
    String cvsSplitBy = ",";
    int nbA,nbB,nbC;
    nbA=nbB=nbC=0;
    String lval="";
    String test;
    double x = 25;
    double y = 100;
    double z = 200;
    double lp1 = 0;
    try {
        ArrayList<String> l1 = new ArrayList<String>();
        br = new BufferedReader(new FileReader(this.filePath));

        while ((line = br.readLine()) != null) {
            //System.out.println(line);
            // use comma as separator
            String[] tempData = line.split(cvsSplitBy);
            allDatakey.add(tempData[0]);
            allDataValue.add(tempData[1]);

            double j = parseDouble(tempData[1]);
}

//我想在这里用j

      if((j>x)&&(j<y)){

        test ="A";
        if(!lval.equals("A")){
        l1.add(test+String.valueOf(nbA));
        nbA++;
        }
        lval="A";

在这段代码中,双 j 在 whileloop 内,我的问题是:我如何声明它以在 whillloop 缓冲区之外使用它......

【问题讨论】:

  • 与您的标题所暗示的不同,double j 不是一个数组。您可以在 while 循环之外使用 double j = -1; 声明它(或在文件中没有行的情况下您希望它具有的任何其他初始值)并使用 j = parseDouble(...); 在 while 循环内分配它跨度>
  • 那是一个while循环块(或while块)。没有任何 while 循环缓冲区。

标签: java arrays eclipse while-loop bufferedreader


【解决方案1】:

声明一个数组可以看这里:How do I declare and initialize an array in Java?

如果您想在 while 循环之外使用 tempData 变量,您还可以将数组复制到一个新数组。

如果您只想将变量 J 放在外面,请执行以下操作:

double j = 0.0;
while (....) {
   j = parseDouble(tempData[1]
}

【讨论】:

  • 就像在while循环之外需要j =0.0
【解决方案2】:

试试这个:

try {
    ArrayList<String> l1 = new ArrayList<String>();
    br = new BufferedReader(new FileReader(this.filePath));
    double j = 0.0;          //shift your J to Outside of the Loop.
    while ((line = br.readLine()) != null) {
        //System.out.println(line);
        // use comma as separator
        String[] tempData = line.split(cvsSplitBy);
        allDatakey.add(tempData[0]);
        allDataValue.add(tempData[1]);
        //change your parseDouble to Double.parseDouble as I Do Here.

        j = Double.parseDouble(tempData[1]); //Initialize Your J here
    // .......
}

注意jwhile 循环之外声明,在循环内部进行初始化,您可以再次在while 之外使用它包含的任何内容。

【讨论】:

  • 如果我这样使用它,它将在循环外为 0.0。
  • 那么您的 parseDouble 方法可能出了问题。
  • 没有。每当执行此语句j = parseDouble(tempData[1]); 时,@ 987654325@ 的值就会改变.. 你说的对吗? J 将包含0.0 当且仅当while 条件为假或tempData[1] 包含0。谢谢
  • 然后调试您的应用程序查看数组tempData 这个变量是否包含您要加载的实际预期数据?与否。
猜你喜欢
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多