NOVATA PIDE AYUDA en programa de java

Iniciado por dvd1975, 17 Septiembre 2008, 12:10 PM

0 Miembros y 1 Visitante están viendo este tema.

dvd1975

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


sapito169

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


dvd1975

#2
¿que es mejor programa para estudiar java o jcreator?
Escribir mas comentarios sobre porque no funciona mi programa

-Ramc-

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:
[code=java]
Porque no me dio ganas ni de leerlo así.[/code]

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

dvd1975

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

Nakp

#5
Código (java) [Seleccionar]
import java.util.Scanner;
class billete {

    public static void main(String args[]) throws IOException  {
       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");
       
    }
   
   
}



siempre pon tu código entre [code=java][/code]
Ojo por ojo, y el mundo acabará ciego.

dvd1975

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.

-Ramc-

Cita de: 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.

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,

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

dvd1975

Código (java) [Seleccionar]

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");
   
    }
   
   
}

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

-Ramc-


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.