import java.io.IOException;
import java.util.Scanner;


public class web_practice {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        //TODO Auto-generated method stub

        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();

        int l = input.indexOf(' ');
        String cmd = input.substring(0, l);
        String end = input.substring(l);

        if (cmd.equals("define"));
        java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/" + end));
    }
}

Que estaba tratando de hacer un código para encontrar la definición de una palabra mediante la conexión de dictionary.com y comprobar si dicen la palabra «definir» como la primera palabra?

La división no está funcionando.

  • Donde usted está usando split ?
  • ¿Qué significa «La división no está funcionando»? ¿Cuál es la entrada?
  • Se puede poner input cadena de valor?
  • por cierto, if (condition); reduce a un noop gracias a la semi-colon (suponiendo un efecto secundario de la condición libre). esta es una razón por la que es considerada la mejor práctica para siempre el uso de llaves con su ifs.

6 Comentarios

  1. 1
    public static void main(String[] args) throws IOException {
            //TODO Auto-generated method stub
    
            Scanner scanner = new Scanner(System.in);
            String input = scanner.next();
    
            int words[] = input.split(' ');
    
            if (words[0].equalsIgnoreCase("define")) {
                java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/" + words[0]));
            }
        }
  2. 0

    este código funcionará para usted

        String[] strArr = input.split(" ") ; 
    
        if(strArr[0].equals("define"){
        }
    • Cómo iba yo a continuación, obtener el resto de la cadena a añadir al final de la url. He intentado hacer strArr[1], pero se dijo que estaba fuera de los límites.
    • el código anterior para asegurarse de obtener la primera palabra, el resto que hacerlo a tu manera.
  3. 0

    Su problema es que usted está utilizando Scanner que el comportamiento predeterminado es dividir el InputStream por un espacio en blanco. Así, cuando usted llame next(), su input cadena que contiene el comando solo, no toda la línea. Uso Scanner.nextLine() método en su lugar.

    También tome nota que String end = input.substring(l); agregará un espacio en el extremo de la cadena. Usted probablemente desea utilizar String end = input.substring(l+1);. Aquí está el fijo main método:

    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
    
        int l = input.indexOf(' ');
        if(l >= 0) {
            String cmd = input.substring(0, l);
            String end = input.substring(l+1);
    
            if (cmd.equals("define"));
                java.awt.Desktop.getDesktop().browse(
                    java.net.URI.create("http://dictionary.reference.com/browse/" + end));
        }
    }
  4. 0

    De La Clase Scanner

    Un Escáner rompe su entrada en fichas utilizando un patrón delimitador, que por defecto coincide con el espacio en blanco. La resultante de las fichas pueden ser convertidos en valores de los diferentes tipos de uso de los distintos métodos siguientes.

    Por lo que no se consigue ' ' utilizando scanner.next(); método. En lugar usted puede utilizar directamente scanner.next(); como:

    Scanner scanner = new Scanner(System.in);
    String input = scanner.next();
    
    if ("define".equals(input )){
         String end = scanner.next();//Next token
         java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/" + end));
    }

    Ver el resultado: salida

  5. 0
        Scanner scanner = new Scanner(System.in);
        String input = scanner.next();;
        String[] inputs = input.split(" ");
        if (inputs[0].equalsIgnoreCase("define")){  java.awt.Desktop.getDesktop().browse(java.net.URI.create("http://dictionary.reference.com/browse/" ));}
    • puede utilizar la Cadena de método split (). le devolverá un array de cadenas. ahora usted puede conseguir su cadena de índice.
    • Para evitar puntero nulo errores, usted debe utilizar "define".equalsIgnoreCase(inputs[0])—es considerado una buena práctica.
    • sí . tienes razón b royhowie . Gracias.
  6. 0

    El problema que yo veo en tu código está utilizando scanner.next(); la next() método va a leer el siguiente token sin espacio para el ex de entrada de la consola define blabla el valor de input variable sería define es decir, sin espacio para que en su caso no hay ningún espacio de carácter tan input.indexOf(' '); volverá -1 dar a excepción de substring() un quickfix sería cambiar la línea scanner.next(); a scanner.nextLine(); que iba a leer toda la línea en lugar de token.

Dejar respuesta

Please enter your comment!
Please enter your name here