Easy Blockchain

228
15 марта 2018, 09:57

Всем привет. Помогите найти ошибку. Создаю элементарную блокчейн из 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:\n" + blockchainJson);
Answer 1

Тебе нужно занести сохранение блока в ветку 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:\n" + blockchainJson);

В твоем примере, происходит следующее : ты создаешь 1 блок, потом завершается оператор if и ты исполняешь новое сохранение блока, из-за чего вся цепочка перестает быть валидной.

READ ALSO
Error during artifact deployment. Spring Security

Error during artifact deployment. Spring Security

При старте приложения на сервере Tomcat происходит ошибка

190
Обновление страницы в java servlet (jsp)

Обновление страницы в java servlet (jsp)

Вопрос в следующем, есть java сервлет и скриплет (jsp) с javaScriptНа сервере происходит обновление в файловой системе, а на jsp это отображается отправляя...

263
Помощь с Задачей на Java. Нужно найти ошибку

Помощь с Задачей на Java. Нужно найти ошибку

На входе, в первой строке задано натуральное число N – количество жильцов (N ≤ 100)В последующих N строках располагается информация о всех жильцах:...

258
Сортировка списка В алфавитном порядке

Сортировка списка В алфавитном порядке

Добрый вечерВот суть задания

208