Как вы заменяете текущий родительский серийный номер в качестве текущего серийного номера для поиска?

#serialization #bots

#сериализация #боты

Вопрос:

Когда я создавал программу, моей целью было, надеюсь, найти исходного бота, серийный номер которого равен 0, используя циклический процесс и случайные целые числа.

Вот код для случайных целых чисел:

     private Random Bot SN = new Random(); // Serial number randomizer    

    // Bot serial number
    private int botSerialNumber = SN.nextInt(rangeSerialNumber); // Sets the bot's serial number

    public int getSN() { // A getter for the bot's serial number
        return this.botSerialNumber;
    }

    // Bot parent number
    private int parentSerialNumber = SN.nextInt(rangeSerialNumber); // Sets the bot's parent number

    public int getParentSN() { // A getter for the bot's serial number
        return this.parentSerialNumber;
    }

    public void setNewBotSN(int botSerialNumber) { // Sets the new bot parent number as the serial number        
    this.botSerialNumber = botSerialNumber;
    }
  

Процесс цикла выполняется следующим образом:

 int botCounter = 0;
int botPopulation = 1000;

while (botCounter < botPopulation) { // Loop
            TimeUnit.SECONDS.sleep(1); // Delay
            Bot bot = new Bot(); // Creates new bot
            if (bot.getSN() == bot.originalSN) { // Main Code
                System.out.println("Bot found!");
                break;
            } else {
                System.out.println("Current bot serial number does not match");
                bot.setNewBotSN(bot.getParentSN()); // Changes the the serial number to parent number
                System.out.println("New bot serial number is "   bot.getSN());
                System.out.println();
                botCounter  ;
            }
        }
  

Фактически, результаты должны выглядеть следующим образом:

 Bot serial number: 124
Bot parent number: 67

Current bot serial number does not match
New bot serial number is 67

Bot serial number: 67 // It then uses the previous parent number as the current serial number
Bot parent number: 0

Current bot serial number does not match
New bot serial number is 0

Bot serial number: 0
Bot parent serial number: <any number> // Because we have found the bot that has 0 as its serial number

Bot found!
  

Ошибка заключается в том, что всякий раз, когда выполняется итерация по циклу, родительский номер, установленный в качестве серийного номера, изменяется на другой новый серийный номер.

 Bot serial number 151
Bot parent number 200

Current bot serial number does not match
New bot serial number is 200 // It correctly changed the serial number to parent number

Bot serial number 523 // Then it changes that to another serial number
Bot parent number 377

Current bot serial number does not match
New bot serial number is 377

Bot serial number 920
Bot parent number 635
  

Что-то не так с моим кодом?

Весь код:

 package com.missingVariable.Application;

import java.util.Random;
import java.util.concurrent.TimeUnit;

class Bot { // I created a class 
    public final int originalSN = 0; // Original serial number to be searched

    private final int rangeSerialNumber = 1000;

    private Random SN = new Random(); // Serial number randomizer
    
    // Bot serial number
    private int botSerialNumber = SN.nextInt(rangeSerialNumber); // Sets the bot's serial number

    public int getSN() { // A getter for the bot's serial number
        return this.botSerialNumber;
    }

    // Bot parent number
    private int parentSerialNumber = SN.nextInt(rangeSerialNumber); // Sets the bot's parent number

    public int getParentSN() { // A getter for the bot's serial number
        return this.parentSerialNumber;
    }

    public void setNewBotSN(int botSerialNumber) {
        this.botSerialNumber = botSerialNumber;
    }
    
    // Bot constructor
    public Bot() {
        System.out.println("Bot serial number "   getSN());
        System.out.println("Bot parent number "   getParentSN());
        System.out.println();

    }
}

public class Application {

    public static void main(String[] args) throws InterruptedException {
        int botCounter = 0;
        int botPopulation = 1000;

        // Loop
        while (botCounter < botPopulation) {
            TimeUnit.SECONDS.sleep(1); // Delay
            Bot bot = new Bot(); // Creates new bot
            if (bot.getSN() == bot.originalSN) { // Main Code
                System.out.println("Bot found!");
                break;
            } else {
                System.out.println("Current bot serial number does not match");
                bot.setNewBotSN(bot.getParentSN()); // Changes the the serial number to parent number
                System.out.println("New bot serial number is "   bot.getSN());
                System.out.println();
                botCounter  ;
            }
        }
    }
}
  

Я отлаживал со вчерашнего дня, я действительно хочу, чтобы эта программа работала.
Спасибо.