Java - ¿QUE FUNCIONES TIENEN ESTAS CLASES?

 
Vista:
sin imagen de perfil
Val: 11
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

¿QUE FUNCIONES TIENEN ESTAS CLASES?

Publicado por Andres Manuel Santana (5 intervenciones) el 07/04/2018 16:21:18
HOLA BUENAS TARDES ANTES QUE NADA ,Y AGRADEZCO AL QUE SE TOME LA MOLESTIA DE LEER Y RESPONDER MI DUDA SOBRE EL SIGUIENTE CODIGO.
VERAN ESTE CODIGO ES UNA TAREA QUE NECESITO EXPLICAR ,PERO HAY UNAS VARIABLES ,FUNCIONES O CLASES QUE NO SE CUAL ES SU FUNCIONAMIENTO COMO LO SON "KnowledgeBase", "findMatch" ,"while (true)" ,"BufferedReader","InputStreamReader","IgnoreCase" ,"import java.io.*" .
ALGUNAS DE ESAS ,BASICAMENTE SON FUNCIONES QUE NO ENTIENDO , DE SER POSIBLE NECESITO UNA EXPLICACION SOBRE COMO INFLUYEN EN EL PROGRAMA.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.io.*;
import java.util.*;
 
 
 
public class Chatterbot2 {
 
    static String[][] KnowledgeBase = {
        {"WHAT IS YOUR NAME",
         "MY NAME IS CHATTERBOT2."
        },
 
        {"HI",
         "HI THERE!",
        },
 
        {"HOW ARE YOU",
         "I'M DOING FINE!"
        },
 
        {"WHO ARE YOU",
         "I'M AN A.I PROGRAM."
        },
 
        {"ARE YOU INTELLIGENT",
         "YES,OFCORSE."
        },
 
        {"ARE YOU REAL",
         "DOES THAT QUESTION REALLY MATERS TO YOU?"
        }
    };
 
    static String findMatch(String str) {
        String result = "";
        for(int i = 0; i < KnowledgeBase.length; ++i) {
            if(KnowledgeBase[i][0].equalsIgnoreCase(str)) {
                result = KnowledgeBase[i][1];
                break;
            }
        }
        return result;
    }
 
    public static void main(String[] args)throws Exception {
        while(true) {
            System.out.print(">");
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Pedro
Val: 305
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

¿QUE FUNCIONES TIENEN ESTAS CLASES?

Publicado por Pedro (102 intervenciones) el 07/04/2018 18:31:53
Hola #Andres

"KnowledgeBase" Es un array estático de la Clase Chatterbot2 ,básicamente lo que hace es lo siguiente :
Es tener almacenada unas respuestas en base a unas preguntas
Si me preguntas WHAT IS YOUR NAME responde MY NAME IS CHATTERBOT2.
Si me preguntas HOW ARE YOU responde I'M DOING FINE!
Y así sucesivamente cuando es llamado desde la función findMatch();

"findMatch" Es un método estático de la Clase Chatterbot2 que lo que hace es esperar un String oséa una palabra
y según la palabra la busca en el array "KnowledgeBase" si está la palabra pues hace lo que te he indicado arriba
Si me preguntas WHAT IS YOUR NAME responde MY NAME IS CHATTERBOT2.
Si me preguntas HOW ARE YOU responde I'M DOING FINE!


"while (true)" Esto no es una función ni tampoco un método es una itineración bucle del programa mientras que sea
verdad imprime por pantalla esto (">");

"InputStreamReader",,"BufferedReader" Son métodos de la Clase io oséa todo lo relaccionado con entrada y salida de datos lectura
en este caso el input lo que hace es leer de algún sitio fichero o lo que sea y bufferedReader es para meter el archivo leido en un buffer para después hacer lo que quieras cuando lo leas línea a línea por ejemplo.

"IgnoreCase" Aquí le indicamos al interprete que como su nombre indica ignora si es mayúscula o minúscula trátame los Strings de igual forma oséa en una comparación por ejemplo así pepe y PEPE o PEPE y pepe es verdadero independientemente de si es mayúscula o minúscula, espero me comprendas.

"import java.io.*" Como su nombre bien indica lo que estamos haciendo es importar todas las Clases que están en el paquete Java.io al poner el asterisco le decimos que nos traiga todas las clases que se encuentran en ese paquete (Java.io). Con esto estamos haciendo honor a la reutilización de código , es decir estamos usando códigos que ya están realizados evitando redundancia y añadiendo orden y organización a nuestros códigos.

Un saludo y espero haberte aclarado las ideas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

¿QUE FUNCIONES TIENEN ESTAS CLASES?

Publicado por Andres Manuel Santana (5 intervenciones) el 08/04/2018 03:42:03
Mas que aclarar las dudas me has ayudado bastante aun que todavia tengo unas dudas en la linea 34 a 39 ,como funciona esa parte del codigo si me pudieras explicar ,te lo agradeceria bastante.
Aparte veo que no se copio todo el codigo , si no es mucha molestia tambien necesito una explicacion de las partes en negrita y como influyen en el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void main(String[] args)throws Exception {
        while(true) {
            System.out.print(">");
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            String sInput = in.readLine();
            String sResponse = findMatch(sInput);
            if(sInput.equalsIgnoreCase("BYE")){
                System.out.println("IT WAS NICE TALKING TO YOU USER, SEE YOU NEXT TIME!");
                break;
            } else if(sResponse.length() == 0) {
                System.out.println("I'M NOT SURE IF I UNDERSTAND WHAT YOU  ARE TALKING ABOUT.");
            } else {
                System.out.println(sResponse);
            }
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Pedro
Val: 305
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

¿QUE FUNCIONES TIENEN ESTAS CLASES?

Publicado por Pedro (102 intervenciones) el 08/04/2018 08:38:56
Es super sencillo el código:

1
2
3
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String sInput = in.readLine();
String sResponse = findMatch(sInput);


Te voy a traducir al idioma de los humanos lo que quiere decir esa parte de código

El while(true) quiere decir mientras que haya entrada desde el teclado (System.in) haz esto oséa lo que hay dentro del bloque {..}

BufferedReader del paquete IO va metiendo en un buffer la entrada de teclado esto se podía haber hecho con un objeto Scanner para recoger con system.in lo que tipees por teclado.

String sInput = in.readLine(); Lo que hace es meter en la variable sinput la linea entera recogida en el BufferReader por ejemplo si has introducido por teclado esto WHAT IS YOUR NAME el valor de sinput=WHAT IS YOUR NAME

String sResponse = findMatch(sInput);

Esta línea de código dice mete en la variable con nombre sResponse el valor que te devuelva el método findMatch() y te paso por parámetro el valor de la entrada de teclado. Si te quieres acordar esto te lo expliqué anteriormente aquí si pones por teclado WHAT IS YOUR NAME te responderá MY NAME IS CHATTERBOT2. si pones por teclado HOW ARE YOU te responderá I'M DOING FINE!.

public static void main(String[] args)throws Exception Este es el método principal de cualquier aplicación Java es por eso que hace honor a su nombre main==principal cuando se ejecuta una aplicación en Java este es el método que busca el interprete para poder empezar el programa a funcionar.

else if(sResponse.length() == 0) Esta parte de código lo que quiere decir es si no has puesto ninguna palabra o mejor dicho si la variable que espera setearse por la entrada de teclado del BuffeReader esta con valor 0, entonces haz lo que está dentro del bloque {...} oséa imprimirá por pantalla I'M NOT SURE IF I UNDERSTAND WHAT YOU ARE TALKING ABOUT

Eso es todo amigo...! si te a parecido bien mi respuesta y lo consideras oportuno debajo de este post puedes valorar mi respuesta tanto dándome un punto positivo como negativo, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

¿QUE FUNCIONES TIENEN ESTAS CLASES?

Publicado por Andres Manuel Santana (5 intervenciones) el 09/04/2018 17:17:44
Claro que si te voy a puntear,pero una ultima cosa.
Osea si ya se lo del public static void main , pero me referia a la parte donde dice throws Exception , ¿para que funciona eso?

public static void main(String[] args)throws Exception
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar