Foro de elhacker.net

Programación => Java => Mensaje iniciado por: dvd1975 en 17 Septiembre 2008, 12:10 pm



Título: NOVATA PIDE AYUDA en programa de java
Publicado por: dvd1975 en 17 Septiembre 2008, 12:10 pm
hola estoy empezando a estudiar java
He conseguido un manual en ingles que es programacion en java para dummies.
Por cierto si alguien lo quiere se lo envio.
Entiendo todo lo que explica.
El problema es que
tengo una duda con el siguiente ejemplo
yo tengo escrito esto
 import java.util.Scanner;
class EchoLine {
   public static void main(String args[]){
      Scanner myScanner= new Scanner(System.in);
      /*System.out.println(myScanner.nextLine());*/
      System.out.println(myScanner.findInLine(".").charAt(1));
      
   }
}
no se si sera un error gordo o tonto, pero yo segun el manual si utilizas myScanner  y findInline buscas e imprimes por pantalla si el segundo valor de array tiene un punto.
es decir que si escribo por ejemplo pepe 8.5
me deberia escribir 8.5
pero me sale el siguiente error
epe 8.5
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
    at java.lang.String.charAt(String.java:687)
    at EchoLine.main(EchoLine.java:6)
que no entiendo he buscado en internet y no encuentro nada o por lo menos nada que me aclare.
pero si pongo todo lo anterior y escribo System.out.println(myScanner.findInLine(".").charAt(0));

La cosa es que funciona y si escribo 8.5  pepe me sale por pantalla 8.5

tambien no me funciona lo siguiente
import java.util.Scanner;
class EchoLine {
   public static void main(String args[]){
      Scanner myScanner= new Scanner(System.in);
      /*System.out.println(myScanner.nextLine());*/
      System.out.println(myScanner.nextInt());
      
   }
}
yo lo quiero es que si escribo pepe 1 me saque por pantalla 1 solamente
me aparece el siguiente mensaje de error
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextInt(Scanner.java:2091)
    at java.util.Scanner.nextInt(Scanner.java:2050)
    at EchoLine.main(EchoLine.java:6)

Process completed.

¿me podria alguien ayudar? no se si sera un error muy basico pero la verdad llevo dos dias en java, y no encuentro el error.
alguien me puede ayudar
gracias



Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: sapito169 en 19 Septiembre 2008, 00:46 am
bueno para ser franco yo no uso la consola tube la malasuerte de que em enseñara solo gui y ai me acostumbre
bueno esplicandote cuando java encuentra un error abeses es capas de identificar y decirte cual es el error solo que te lo dice en ingles com oen este caso si te ponen

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
    at java.lang.String.charAt(String.java:687)
    at EchoLine.main(EchoLine.java:6)

traduciendo

eror en timpo de ejecucion "principal(manin)" java.lang.StringIndexOutOfBoundsException(excepción de fuera del rango de la cadena): cadena fuera del rango por un valor los errores se ubican en:
    at java.lang.String.charAt(String.java:687)
    at EchoLine.main(EchoLine.java:6)

te recomiendo que cuando te salga una excepción lo pongas en el traductor de google y procures estar memorisando las esepciones

el problema seguramente es por que en la linea

System.out.println(myScanner.findInLine(".").charAt(1));

el charat(1) no en encuentra el segundo caracter de isquierda a derecha dije segundo no primero recuerda que java el 99 porciento de las veces comiensa a contar desde 0



Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: dvd1975 en 22 Septiembre 2008, 12:59 pm
¿que es mejor programa para estudiar java o jcreator?
Escribir mas comentarios sobre porque no funciona mi programa


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: -Ramc- en 22 Septiembre 2008, 17:58 pm
Yo prefiero escribir mi code a mano con gedit, kdevelop o similares, pero, si quieres un ide, te recomiendo eclipse, es el que mas use y me parece excelente vendran otros que te diran otro ide, pero, es mas por gustos, yo te recomiendo eclipse o que escribas a mano con lo cual aprendes mucho mas que con un ide que te escribe parte del código.

Por cierto, escriban el codigo entre etiquetas:
Código:
[code=java]
Porque no me dio ganas ni de leerlo así.[/code]


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: dvd1975 en 2 Octubre 2008, 11:14 am
ya solucione lo anterior pero no me funciona este programa

import java.util.Scanner;
 class billete {

    public static void main(String args[])  {
       Scanner myScanner=new Scanner(System.in);
       int edad;
       char resp;
       double precio=0.00;
       System.out.print("Introduzca edad  ");
       edad=myScanner.nextInt();
       System.out.print("Tienes un cupon");
       resp=myScanner.findInLine(".").charAt(0);
       if(edad>=12 && edad<65)
          precio=9.25;
       if(edad<12 || edad>=65)
          precio=5.25;
       if(resp=='Y' || resp=='y')
          precio-=2.00;
                
       if(resp!='Y' && resp!='y' && resp!='N' && resp!='n')
          System.out.println("ehhh");
       System.out.print("por favor, pago$");
       System.out.print(precio);
       System.out.print(".");
       System.out.println("Diviertase");
       
    }
   
   
}


me parece el siguiente mensaje

Exception in thread "main" java.lang.NullPointerException
    at billete.main(tarifasmayores2.java:20)
he mirado en internet indica que hay un puntero apuntado a nulo es decir que existe un error con la variable resp pero  yo he hecho otro programa cogiendo los valores de la variable resp con myScanner y me funciona asi que no se puede ocurrir alguien me ayuda


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: Nakp en 2 Octubre 2008, 17:36 pm
Código
  1. import java.util.Scanner;
  2. class billete {
  3.  
  4.    public static void main(String args[]) throws IOException  {
  5.       Scanner myScanner=new Scanner(System.in);
  6.       int edad;
  7.       char resp;
  8.       double precio=0.00;
  9.       System.out.print("Introduzca edad  ");
  10.       edad=myScanner.nextInt();
  11.       System.out.print("Tienes un cupon");
  12.       resp=myScanner.findInLine(".").charAt(0);
  13.       if(edad>=12 && edad<65)
  14.          precio=9.25;
  15.       if(edad<12 || edad>=65)
  16.          precio=5.25;
  17.       if(resp=='Y' || resp=='y')
  18.          precio-=2.00;
  19.  
  20.       if(resp!='Y' && resp!='y' && resp!='N' && resp!='n')
  21.          System.out.println("ehhh");
  22.       System.out.print("por favor, pago$");
  23.       System.out.print(precio);
  24.       System.out.print(".");
  25.       System.out.println("Diviertase");
  26.  
  27.    }
  28.  
  29.  
  30. }


siempre pon tu código entre [code=java][/code]


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: dvd1975 en 3 Octubre 2008, 11:19 am
yo he puesto lo que tu dices
throws IoException y sigue sin funcionar,
utilizo jcreator
y me dice que tengo un error en la linea

resp=myScanner.finInline---
que
Exception in thread "main" java.lang.NullPointerException
    at billete.main(tarifasmayores2.java:20)
Es decir que apunta a un puntero nulo.


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: -Ramc- en 3 Octubre 2008, 16:15 pm
yo he puesto lo que tu dices
throws IoException y sigue sin funcionar,
utilizo jcreator
y me dice que tengo un error en la linea

resp=myScanner.finInline---
que
Exception in thread "main" java.lang.NullPointerException
    at billete.main(tarifasmayores2.java:20)
Es decir que apunta a un puntero nulo.

La excepción es IOException, recuerda que java es case sensitive.
Y el metodo es findInLine.
por si acaso no es eso, dejanos ver tu código, según el error es la linea 20 o cerca,


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: dvd1975 en 4 Octubre 2008, 14:32 pm
Código
  1. import java.util.Scanner;
  2. class billete {
  3.  
  4.    public static void main(String args[])  {
  5.     Scanner myScanner=new Scanner(System.in);
  6.     int edad;
  7.     char resp;
  8.     double precio=0.00;
  9.     System.out.print("Introduzca edad  ");
  10.     edad=myScanner.nextInt();
  11.     System.out.print("Tienes un cupon");
  12.     resp=myScanner.findInLine(".").charAt(0);
  13.     if(edad>=12 && edad<65)
  14.     precio=9.25;
  15.     if(edad<12 || edad>=65)
  16.     precio=5.25;
  17.     if(resp=='Y' || resp=='y')
  18.     precio-=2.00;
  19.  
  20.     if(resp!='Y' && resp!='y' && resp!='N' && resp!='n')
  21.     System.out.println("ehhh");
  22.     System.out.print("por favor, pago$");
  23.     System.out.print(precio);
  24.     System.out.print(".");
  25.     System.out.println("Diviertase");
  26.  
  27.    }
  28.  
  29.  
  30. }
  31.  
ese el codigo que escrito y me
funcion bien hasta que llega a la linea
resp=myScanner.findInLine(".").charAt(0);
donde me aparece el siguiente error
Exception in thread "main" java.lang.NullPointerException
    at billete.main(tarifasmayores2.java:20)

Si pongo en la linea que me dijisteis

public static void main(String args[]) throws IOException {
me aparece un error
C:\Documents and Settings\Propietario\Mis documentos\curso de java\ejercicios java\tarifasmayores2.java:12: cannot find symbol
symbol  : class IOException
location: class billete
    public static void main(String args[]) throws IOException {

Gracias por ayudarme a ver si me podeis decir entre todos cual es el error


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: -Ramc- en 4 Octubre 2008, 18:57 pm
Código:
import java.io.IOException;


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: dvd1975 en 4 Octubre 2008, 22:34 pm
hola he puesto.

Código
  1. import java.util.Scanner;
  2. import java.io.IOException;
  3.  

y solamante import java.io.IOException;
y sigue sin funcionar me sigue apareciendo el mensaje
Exception in thread "main" java.lang.NullPointerException
    at billete.main(tarifasmayores2.java:20)
 es decir tengo un error en la linea resp=myScanner.findInLine("."),chatAt(0);


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: -Ramc- en 5 Octubre 2008, 00:38 am
La verdad es que no trabajo mucho con la clase Scanner, pero, haciendo pruebas, si antes de llegar a esa linea, vuelves a instanciar myScanner
Código:
System.out.print("Tienes un cupon");
myScanner = new Scanner(System.in);
resp = myScanner.findInLine(".").charAt(0);

No da error, al parecer es que el buffer no esta limpio y toma tu primera entrada y también la usa para la segunda, debe haber otra forma mas eficiente, pero, mientras encuentro, esa ya no te da error.


Título: Re: NOVATA PIDE AYUDA en programa de java
Publicado por: dvd1975 en 14 Octubre 2008, 11:56 am
Hola buenos dias estoy realizando este ejercicio en java 
Código
  1. import java.util.Scanner;
  2. class ficheros1 {
  3.  
  4.    public  static void main(String args[]) {
  5.     Scanner myScanner= new Scanner(System.in);
  6.     double precio,cantidad,total;
  7.     precio=myScanner.nextDouble();
  8.     cantidad=myScanner.nextInt();
  9.  
  10.     total=precio*cantidad;
  11.  
  12.     System.out.println(total);
  13.    }
  14.  
  15.  
  16. }
  17.  
me aparece el siguiente error
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:840)
    at java.util.Scanner.next(Scanner.java:1461)
    at java.util.Scanner.nextDouble(Scanner.java:2387)
    at ficheros1.main(ficheros1.java:15)

yo tengo que escribir

19.95 5

99.75
es decir el resultado de 19.95*5

entre los dos digitos tiene que haber un espacio

pero segun he leido en interenet en ingles  Exception in thread "main" java.util.InputMismatchException
es que  cuando se ejecuta la linea
cantidad=myScanner.nextInt();
 se espera un numero  pero como yo he puesto 5.55espacio6 el espacio produce un error porque el programa espera recibir un entero sin decimales.
He probado a escribir
5.55 intro
6 intro
pero no me funciona me sigue saliendo el error anterior.
y  he probado a poner
Código
  1. precio=myScanner.nextDouble();
  2. myScanner=new Scanner(System.in);
  3. cantidad=myScanner.nextInt();
  4. segun el post anterior limpiando el buffer y tampoco mes sale
  5.  

Código
  1. precio=myScanner.nextDouble();
  2. System.out.println();
  3. cantidad=myScanner.nextInt();
  4.  
y me sigue saliendo el mismo error

No se si el error es pequeño pero no quiere seguir adelante hasta saber porque se produce este error para seguir aprendiendo java, y como realizar el programa
gracias