Всем привет. Помогите найти ошибку. Создаю элементарную блокчейн из 5 элементов. Остальной код работает, проверяла без цикла. Я новичек в джаве. Получается, что сохраняется только два хеша первых элементов.
int numberOfBlocks = 5;
for(int i = 1; i <= numberOfBlocks; i++) {
String endOfNumber = "";
if (i == 1)
blockchain.add(new Block(i + "st block", "0"));
else {
switch(i) {
case 2:
endOfNumber = "nd";
break;
case 3:
endOfNumber = "rd";
break;
default:
endOfNumber = "th";
break;
}
}
blockchain.add(new Block(i + endOfNumber + " block", blockchain.get(blockchain.size()-1).hash));
System.out.println("Try to mine block " + i);
blockchain.get(i-1).mineBlock(difficulty);
System.out.println("Blockchain is Valid: " + isChainValid());
}
String blockchainJson = new GsonBuilder().setPrettyPrinting().create().toJson(blockchain);
System.out.println("The blockchain:
" + blockchainJson);
Ответ
Тебе нужно занести сохранение блока в ветку else после операции switch, вот код:
int numberOfBlocks = 5;
for(int i = 1; i <= numberOfBlocks; i++) {
String endOfNumber = "";
if (i == 1)
blockchain.add(new Block(i + "st block", "0"));
else {
switch(i) {
case 2:
endOfNumber = "nd";
break;
case 3:
endOfNumber = "rd";
break;
default:
endOfNumber = "th";
break;
}
blockchain.add(new Block(i + endOfNumber + " block", blockchain.get(blockchain.size()-1).hash));
}
System.out.println("Try to mine block " + i);
blockchain.get(i-1).mineBlock(difficulty);
System.out.println("Blockchain is Valid: " + isChainValid());
}
String blockchainJson = new GsonBuilder().setPrettyPrinting().create().toJson(blockchain);
System.out.println("The blockchain:
" + blockchainJson);
В твоем примере, происходит следующее : ты создаешь 1 блок, потом завершается оператор if и ты исполняешь новое сохранение блока, из-за чего вся цепочка перестает быть валидной.
Комментариев нет:
Отправить комментарий