Сначала вы должны объявить x
как массив:
public int[] x;
заметить, что стиль Java не int x[];
Затем внутри Square()
Вы должны инициализировать x
следующим образом:
x = new int[10];
Наконец, это:
(Math.pow(x[i] - 2.5, 2)) / (2 * (x[i] - 2.5))
возвращает double
, поэтому вы должны привести его к int
: [1121 ]
x[i+1] = x[i] - (int) ((Math.pow(x[i] - 2.5, 2)) / (2 * (x[i] - 2.5)));
Итак, ваш код должен быть:
public int[] x;
public void Square() {
x = new int[10];
x[0] = 7;
}
public void root() {
if (x == null)
Square();
for(int i = 0; i < x.length - 1; i++) {
x[i+1] = x[i] - (int) ((Math.pow(x[i] - 2.5, 2)) / (2 * (x[i] - 2.5)));
System.out.println(x[i+1]);
}
}
Внутри цикла вы обращаетесь к элементу i + 1
, поэтому счетчик цикла должен принимать значения до x.length - 2
, это почему у меня в коде: i < x.length - 1
.
Я удалил объявление y
из Square()
, так как оно не используется.
Querying for a Date Range (Specific Month or Day) в MongoDB Cookbook есть очень хорошее объяснение по этому вопросу, но ниже я попробовал кое-что сам, и, кажется, это работает.
items.save({
name: "example",
created_at: ISODate("2010-04-30T00:00:00.000Z")
})
items.find({
created_at: {
$gte: ISODate("2010-04-29T00:00:00.000Z"),
$lt: ISODate("2010-05-01T00:00:00.000Z")
}
})
=> { "_id" : ObjectId("4c0791e2b9ec877893f3363b"), "name" : "example", "created_at" : "Sun May 30 2010 00:00:00 GMT+0300 (EEST)" }
Исходя из моих экспериментов, вам необходимо сериализовать даты в формат, который поддерживает MongoDB, потому что следующие примеры дают нежелательные результаты поиска.
items.save({
name: "example",
created_at: "Sun May 30 18.49:00 +0000 2010"
})
items.find({
created_at: {
$gte:"Mon May 30 18:47:00 +0000 2015",
$lt: "Sun May 30 20:40:36 +0000 2010"
}
})
=> { "_id" : ObjectId("4c079123b9ec877893f33638"), "name" : "example", "created_at" : "Sun May 30 18.49:00 +0000 2010" }
Во втором примере не было ожидаемых результатов, но один все же был получен. Это происходит потому, что выполняется базовое сравнение строк.
mongoose.model('ModelName').aggregate([
{
$match: {
userId: mongoose.Types.ObjectId(userId)
}
},
{
$project: {
dataList: {
$filter: {
input: "$dataList",
as: "item",
cond: {
$and: [
{
$gte: [ "$item.dateTime", new Date(`2017-01-01T00:00:00.000Z`) ]
},
{
$lte: [ "$item.dateTime", new Date(`2019-12-01T00:00:00.000Z`) ]
},
]
}
}
}
}
}
])
MongoDB фактически хранит миллис даты как int (64), как предписано http://bsonspec.org/#/specification
Однако он может получить довольно сбивает с толку, когда вы извлекаете даты, поскольку драйвер клиента создает экземпляр объекта даты с его собственным локальным часовым поясом. Драйвер JavaScript в консоли mongo обязательно сделает это.
Итак, если вы заботитесь о своих часовых поясах, убедитесь, что вы знаете, какими они должны быть, когда вы их вернете. Это не должно иметь большого значения для запросов, поскольку оно по-прежнему будет приравниваться к тому же int (64), независимо от того, в каком часовом поясе находится ваш объект даты (я надеюсь). Но я бы определенно сделал запросы с фактическими объектами даты (не строками) и позволил бы драйверу делать свое дело.