Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

148
Vistas
Variables estáticas que se generan automáticamente y se deben pasar en el constructor para la creación de instancias de objetos

Hola, soy nuevo en Java y tengo una tarea en la que durante días no pude averiguar cómo tener un atributo único para cada objeto que se genera aleatoriamente. En mi reserva de clase, quiero que kratisid sea único y generado aleatoriamente para cada object pero si hago eso en el constructor en el método main(), necesito pasar un valor aritmético y no el generado automáticamente. Aquí está el código:

 import java.utils.*; import static org.apache.commons.lang3.RandomStringUtils.*; public class reservation { String onoma; int afixi; int mdiam; int atoma; Domatio domat;//domat prosorinos deiktis sto object Domatio tha balo d meta Domatio d; Random rand = new Random();//this.kratisid=kratisid; kai stin main bazo random //random kratisi id static int kratisid = rand.nextInt(500) + 100;//It produces a random kratisid between 100 and 500 String onoma = RandomStringUtils.randomAlphabetic(10); //it produces a random alphabetic string for the onoma variable public reservation(String onoma, int kratisid, int afixi, int mdiam, int atoma, Domatio d)//boolean s) { //info for customer of a hotel reservation,d is reference to Domatio objects an another class d = null; this.onoma = onoma; //System.out.println("Enter your name please"); //Scanner scanner1= new Scanner(System.in); //onoma=scanner1.nextLine() this.afixi = afixi; //System.out.println("Enter your day of arrival please ,it must be from 1 to 30 max"); //Scanner scanner2=new Scanner(System.in); // afixi=scanner2.nextInt(); // if(afixi<1 && afixi>30){ // afixi=0; // System.out.println("Please re-enter your arrival within the month boundaries"); //} this.mdiam = mdiam; //System.out.println("Please enter the number of days you will be staying"); // Scanner scanner3=new Scanner(System.in); // mdiam=scanner3.nextInt(); this.atoma = atoma;// }

Ahora, en el método principal, cuando creo un objeto, por ejemplo, necesito pasar el kratisid estático como argumento, pero ¿cómo hago para que el objeto tenga el kratisid aleatorio estático sin necesidad de pasarlo en la creación del objeto en main? En caso de que no lo haya dicho, trato de crear un kratisid aleatorio único para cada objeto y un onoma que también es aleatorio, pero si el usuario lo desea, puede ingresar el suyo.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si desea crear objetos con diferentes campos inicializados aleatoriamente, entonces debería considerar algo como esto:

 public class Reservation { private static final Random r = new Random(0); private int kratisid = r.nextInt(500) + 100; // ... }

Tenga en cuenta que:

  • Los números aleatorios y los identificadores únicos son conceptos relacionados, pero ser aleatorio no es lo mismo que ser único.
  • Esta solución adolece de una condición de carrera crítica, ya que los objetos pueden interferir en r

Como tal, considere esta solución:

 public class Reservation { private static final Random r = new Random(0); private static Semaphore semaphore = new Semaphore(1); private static int getRandomInt() { final int res; semaphore.acquireUninterruptibly(); res = r.nextInt(500) + 100; semaphore.release(); return res; } private int kratisid = getRandomInt(); // ... }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda