Страницы

Поиск по вопросам

пятница, 17 мая 2019 г.

Easy Blockchain

Всем привет. Помогите найти ошибку. Создаю элементарную блокчейн из 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 и ты исполняешь новое сохранение блока, из-за чего вся цепочка перестает быть валидной.

Комментариев нет:

Отправить комментарий