Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

ayuda con un ejercicio en java

marcopolo198

Bovino maduro
Desde
14 Dic 2008
Mensajes
140
bueno no es tanto un problema si no que al escribir una serie de numeros en una condicion ejemplo

if(codigo= = 018928){

al tratar de compilarlo me dice que el numero 018928 es demaciado largo, en ingles dice
integer number is too large

pero si en ves de ese numero se pone 410234
no marca ese error,
me he dado cuenta que todos los numeros que empiezan con 0 me los marca con ese error
y necesito escribir series de 6 numeros en las condiciones como en el ejemplo pero muchos tienen el cero al iniciar y pues me marca el error como puedo solucionar ese problema????
 
Ok. mira el error te lo marca porque estas intentando hacer una representacion de tipo octal
pero en la representacion octal solo puedes usar los digitos del 1 al 7, entonces al usar el 8 y el 9 te marca error porque no son digitos validos en la representacion octal.
ahora cualquier numero que le antepongas el 0 sera interpretado como octal,

yo en tu caso usaria String(cadena)
digamos algo asi
String codigo='018928';
if(codigo=='018928'){//sentencias}
 
Ok. mira el error te lo marca porque estas intentando hacer una representacion de tipo octal
pero en la representacion octal solo puedes usar los digitos del 1 al 7, entonces al usar el 8 y el 9 te marca error porque no son digitos validos en la representacion octal.
ahora cualquier numero que le antepongas el 0 sera interpretado como octal,

yo en tu caso usaria String(cadena)
digamos algo asi
String codigo='018928';
if(codigo=='018928'){//sentencias}
gracias por contestar tal ves no entendi bien pero mira el codigo que tengo hasta la primera condicion y te dire los errores que me pone

public class Articulos{
String codigo;
public Articulos(){

}
public void precios(String a){
codigo=a;

if(codigo==717594){......
hay como 40 codiciones con diferentes numeros todos en series de 6

1.-bueno el error que me marca sigue siendo el mismo integer number too large
en los mismos numeros (los que empiezan con "0")
2.-otro error es por ejemplo me marca eeror en las condiciones,en todas) incoparables types: java.lag.String and int else if (codigo= = 456789){

podrias decirme donde estoy mal ya que hasta donde entendi el String se usa en cadena de caracteres osea simbolos y letras
 
Checando tu codigo y los mensajes de error que mencionas me parece que tienes 2 problemas, el primero ya comentaron el porque (la representacion de un numero octal con digitos mayores a 7), el segundo se debe a la forma en que estas comparando el valor almacenado en "codigo" el cual es de tipo String y un numero entero u octal. En este caso la comparacion la podrias hacer de 2 formas
if ( codigo == "717594" ) { ... }
o
if ( codigo.equals("717594") ) { ... }

Me parece que la mejor forma es la segunda, pero cualquiera de las 2 funciona.
Cuando quieres representar una cadena dentro del codigo esta tiene que estar delimitada por comillas, es por eso que las condiciones te marcan error, intentas comparar 2 tipos de datos diferentes String e Integer.
Otra forma de obtener la representacion en String de un entero u otro tipo es usando el metodo estatico String.valueOf( parametro ) el cual esta sobrecargado para recibir varios tipos de datos y devuelve un String. Usando este metodo tu codigo quedaria maomenos asi.
if( codigo.equals(String.valueOf(717594)) ) { ... }
aunque tendrias que checar como funciona con datos octales.
Espero te sea de ayuda mi comentario.:)
 
Checando tu codigo y los mensajes de error que mencionas me parece que tienes 2 problemas, el primero ya comentaron el porque (la representacion de un numero octal con digitos mayores a 7), el segundo se debe a la forma en que estas comparando el valor almacenado en "codigo" el cual es de tipo String y un numero entero u octal. En este caso la comparacion la podrias hacer de 2 formas
if ( codigo == "717594" ) { ... }
o
if ( codigo.equals("717594") ) { ... }

Me parece que la mejor forma es la segunda, pero cualquiera de las 2 funciona.
Cuando quieres representar una cadena dentro del codigo esta tiene que estar delimitada por comillas, es por eso que las condiciones te marcan error, intentas comparar 2 tipos de datos diferentes String e Integer.
Otra forma de obtener la representacion en String de un entero u otro tipo es usando el metodo estatico String.valueOf( parametro ) el cual esta sobrecargado para recibir varios tipos de datos y devuelve un String. Usando este metodo tu codigo quedaria maomenos asi.
if( codigo.equals(String.valueOf(717594)) ) { ... }
aunque tendrias que checar como funciona con datos octales.
Espero te sea de ayuda mi comentario.:)

gracias ya se quitaron esos errores ahora me ocurre un problema que creo es mas sencillo, en la clase donde pido el numero (que se supone deve ser uno qque va a ir en la condicion , para despues ejecutar lo demas, ejemplo

System.out.println("escriba el numero de 6 digitos");
codigo=....aqui como lo recibo??,con String trate, compila pero al escribir un numero no ejecuta la condicion me supongo que string es para cadena de caracteres , pero si lo pongo como integer,no puedo hacer lo que ustedes dicen
if ( codigo == "717594" ) ya que el unmero es integer y lo estoy comparando como string y me marca error y creio que ya me enrrede mira escribo el codigo

System.out.println("escriba el numero de 6 digitos");
codigo= ... no se cual debo elegir
objetoA.precios(codigo); // aqui estoy mandando a "codigo" a la clase que tiene las condiciones

//estando en la clase donde estan las condiciones

public class Articulos{
depende de los demas codigo;//el tipo de dato dependera de como lo pido
public Articulos(){

}
public void precios(depende la que elegi al pedir el codigo a){//recibiendo a codigo
codigo=a;//igualo para asi ocupar la palabra codigo

y ya despues vienen las condiciones


espero haver espesificado mas y gracias me han servido sus respuestas aunque sigo con esos problemas
 
gracias ya se quitaron esos errores ahora me ocurre un problema que creo es mas sencillo, en la clase donde pido el numero (que se supone deve ser uno qque va a ir en la condicion , para despues ejecutar lo demas, ejemplo

System.out.println("escriba el numero de 6 digitos");
codigo=....aqui como lo recibo??,con String trate, compila pero al escribir un numero no ejecuta la condicion me supongo que string es para cadena de caracteres , pero si lo pongo como integer,no puedo hacer lo que ustedes dicen
if ( codigo == "717594" ) ya que el unmero es integer y lo estoy comparando como string y me marca error y creio que ya me enrrede mira escribo el codigo

System.out.println("escriba el numero de 6 digitos");
codigo= ... no se cual debo elegir
objetoA.precios(codigo); // aqui estoy mandando a "codigo" a la clase que tiene las condiciones

//estando en la clase donde estan las condiciones

public class Articulos{
depende de los demas codigo;//el tipo de dato dependera de como lo pido
public Articulos(){

}
public void precios(depende la que elegi al pedir el codigo a){//recibiendo a codigo
codigo=a;//igualo para asi ocupar la palabra codigo

y ya despues vienen las condiciones


espero haver espesificado mas y gracias me han servido sus respuestas aunque sigo con esos problemas

Por lo que entiendo ahora tu problema es la obtención de los datos desde la consola, para eso checa la clase BufferedReader y System.in con esos vas a poder obtener datos de la consola, me parece que obtienes un objeto String, pero puedes hacer la conversion a otros tipos de datos con los metodos valueOf de cada tipo.
 
Em...

No es mas facil pedir los datos con el Swing ???

Digo, es una posibilidad...

A menos que estes limitado a hacerlo desde consola...
 
Volver
Arriba