Не может преобразовать '0000-00-00 0:00:00' для ДОБАВЛЕНИЯ МЕТКИ ВРЕМЕНИ

1) Сохранить ссылку на текущий (изначально заголовок), следующий (изначально нулевой), предыдущий (изначально нулевой) узел

2) Установить хвост на заголовок, если вы используете указатель хвоста

[ 115] 3) Перейдите этот параметр списка рядом с current.next, current.next к предыдущему, предыдущему к текущему и, наконец, текущему к следующему

4) В зависимости от того, как вы это делаете после цикла, вы должны установить current.next to previous и head to current

Я включил итерационные и рекурсивные решения ниже.

class Node {
 constructor(value, next){
  this.value = value;
  this.next = next;
 }
}

class LinkedList {
 constructor(){
  this.size = 0;
  this.head = null;
  this.tail = null;
 }
 
 add(value){
  const node = new Node(value, null);
  
  if(this.head === null){
   this.head = node;
   this.tail = node;
  } else {
   this.tail.next = node;
   this.tail = node;
  }
  
  this.size++;
 }
 
 traverse(){
  let current = this.head;
  
  while(current != null){
   console.log(current.value);
   current = current.next;
  }
 }
 
 reverse(){
   let current = this.head;
   let previous = null;
   let next = null;
   this.tail = current;
   
   while(current != null && current.next != null){
      next = current.next;
      current.next = previous;
      previous = current;
      current = next;
   }
   
   current.next = previous;
   this.head = current;
 }
 
 _reverseRecursively(node){
  if(node == null){
   return null;
  }
  
  if(node.next == null){
   this.head = node;
   return node;
  }
  
  let nextNode = this._reverseRecursively(node.next);
  nextNode.next = node;
  node.next = null;
  return node;
 }
 
 reverseRecursively(){
  this.tail = this.head;
  this._reverseRecursively(this.head);
 }
}

const list = new LinkedList();

list.add(10);
list.add(12);
list.add(14);
console.log("Original List");
list.traverse();
list.reverse();
console.log("Reversed List - using loop");
list.traverse();
list.reverseRecursively();
console.log("Reversed List - using recursion");
list.traverse();

28
задан LuckyMalaka 6 March 2012 в 08:06
поделиться

2 ответа

Я собираюсь сделать безумное предположение, что вы используете MySQL :-) Он использует «нулевые даты» в качестве специального заполнителя - к сожалению, JDBC не может обрабатывать их по умолчанию.

Решение состоит в том, чтобы указать "zeroDateTimeBehavior = convertToNull" в качестве параметра для вашего соединения MySQL (либо в URL-адресе источника данных, либо в качестве дополнительного свойства), например:

jdbc:mysql://localhost/myDatabase?zeroDateTimeBehavior=convertToNull

Это приведет к получению всех таких значений как NULL.

67
ответ дан 28 November 2019 в 02:43
поделиться

Я не понимаю смысла в вашем коде, где вы форматируете, а затем снова анализируете дату. Это похоже на идентичную операцию. Может быть, вы могли бы уточнить?


Если вы хотите присвоить дате значение по умолчанию, вы можете сделать:

/** Jan 1, 1970 ; first moment in time in Java */
private static final Date NO_DATE = new Date(0L);

private Date date;

public void setDate(final Date date) {
     if (date == null) {
         this.date = NO_DATE;
     } else {
         this.date = date;
     }
}

Примечание: аннотации являются опциональными, здесь я не сделал добавить их.

В этом коде вы можете заменить то, что вы хотите, условием и значением по умолчанию.

Вы также можете добавить аналогичный установщик, который будет принимать аргумент String, и проверить ваше специальное значение «00000 ...». Это позволило бы установить поле либо с датой, либо со строкой.

4
ответ дан barclay 28 November 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: