#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 ;
}
}
}
}
Я отлаживал со вчерашнего дня, я действительно хочу, чтобы эта программа работала.
Спасибо.