Java奇数数组

时间:2016-01-30 00:19:39

标签: java arrays

所以我刚开始上课,开始学习java。我遇到了一个任务,你需要在-6和38之间取几率并将它们放入一个数组中。我完全迷失了,这可能是一个愚蠢的问题但我在开始的程序中哪里出错?

Odd number of numbers between -5 and 38 is 23
-5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
Process finished with exit code 0

我得到的输出是:

        if (lowNumber % 2 == 0) {
            lowNumber += 1;
            odds[i] = lowNumber;

我猜是因为

var workbook = new Excel.Workbook();
   workbook.xlsx.readFile('utils/valid.xlsx')
                        .then(function() {
                            var worksheet = workbook.getWorksheet(1);
                            worksheet.eachRow(function(row, rowNumber) {
                                //count++;
                                console.log(rowNumber);
                                var row = worksheet.getRow(rowNumber);
                                var dataPath1 =  row.getCell("A").value;
                                var dataPath2 =  row.getCell("B").value;
                                var dataPath = '/PlaceFulfillmentOrderRequest'+dataPath1+dataPath2;
                                console.log(dataPath);
                                var dataValue = row.getCell("D").value
                                console.log(dataValue);
                                validate (dataPath,dataValue);

                            });

})

 function validate(dataPath, dataValue){
       fs.readFile('utils/PlaceFulfillmentOrder.xml', 'utf8', function (err,data) { 
          if (err) {
              console.log("ERROR ERROR ERROR ERROR ");
            return console.log(err);
          }
          var doc = new dom().parseFromString(data);
          var subId = xpath.select1(dataPath, doc);
          var value = subId.lastChild.data;
          console.log("actual value: " + value);
          assert.equal(value, dataValue, 'Not matched') 
          console.log("passed")
      });
    }

2 个答案:

答案 0 :(得分:2)

你的循环应该从lowNumber开始并以highNumber结束。你应该检查它们中的赔率。

循环应该像:

int j = 0;
for(int i = lowNumber; i < highNumber; i++){
    if(i % 2 == 1)
        odds[j++] = i;
}

您的代码存在很多问题。

  1. 您的循环开始和结束点是错误的。

  2. 您正在将i递增2.(为什么?)

  3. 在初始化时检查odds[]数组的索引。

答案 1 :(得分:0)

您的代码无效,因为您只在lowNumber%2==0时将值添加到数组中。这只是一次,因为在那之后,你增加2并且永远不输入条件。试试这个:

for(int i=0; i<arraySize; i++) {
    if (lowNumber % 2 == 0) {
        lowNumber += 1;
    }
    odds[i] = lowNumber;
    lowNumber += 2;
}

刚开始时,您不会被期望使用或了解ArrayList,但他们会很容易解决这个问题。

import java.util.*;
public class oddNumbersClass {
    public static void main(String args[]) {
        int lowNumber = -6;
        int highNumber = 38;
        ArrayList<Integer> odds = new ArrayList<Integer>();
        for (int i = lowNumber; i <= highNumber; i ++) {
            if (lowNumber % 2 != 0) {
                odds.add(i);
            }
        }
        System.out.println("Odd number of numbers between " + lowNumber + " and " + highNumber + " is " + odds.size());
        for (Integer i : odds) {
            System.out.print(i + " ");
        }
    }
}