Java - Nuevo en programación

 
Vista:
sin imagen de perfil

Nuevo en programación

Publicado por sergio (7 intervenciones) el 20/04/2018 05:17:34
Buenas noches colegas:

llevo recíen un par de semanas aprendiendo a programar en java y en el curso que estoy llevando me han pedido que implemente una calse arreglo que me permita instanciar objetos arreglos de datos de punto flotante cumpliendo las siguientes características:

1) gestión dinámica de memoria para los arreglos
2) Ingreso de datos mediantes teclado
3) siguiendo la siguiente estructura para la clase



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
48
49
50
public class ArregloFloat {
    private float arreglo[];
 
    public ArregloFloat (int nroElementos){
             //Implementar
    }
 
    public ArregloFloat(float ArregloAux[]){
         //Implementar
    }
 
    public void ingresaArreglo(){
         //Implementar
    }
 
    public float elementomaximo(){
        return 0;
            //Implementar    
    }
 
    public float sumaelementos(){
        return 0;
         //Implementar
    }
 
    public float mediaAritmética(){
        return 0;
         //Implementar
    }
 
    public boolean compara(ArregloFloat arreglo2){
        return false;
         //Implementar
    }
 
    public ArregloFloat sumaArreglos (ArregloFloat arreglo2){
        return null;
         //Implementar
    }
 
    @Override
    public String toString(){
        return null;
         //Implementar
    }
 
    public void imprimeArreglo(){
         //Implementar
    }
}

Los resultado deben ser
Imprimir Arreglo 1
Elemento máximo del Arreglo1
MediaAritmética del Arreglo1
Compara Arreglo1 con Arreglo2
Compara Arreglo2 con Arreglo3
Suma Arreglo 1 y 2 = Arreglo 3
Imprime Arreglo 3

Mi dificultad radica en la definición de la clase arreglo. Me podrían ayudar?
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
sin imagen de perfil
Val: 90
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Nuevo en programación

Publicado por Simon (25 intervenciones) el 20/04/2018 18:31:47
En el constructor en la linea 4:
1
2
3
public ArregloFloat(int nroElementos) {
arreglo = new float[nroElementos];
}
asi inicializas el array cuando lo llamas al constructor en el programa principal con una longitud de nroElemento que le pasas como parametro.
En el constructor de la linea 8 supongo que sera para que iguale los arrays asique seria:
1
2
3
public ArregloFloat(float arregloAux[]) {
arreglo = arregloAux;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Nuevo en programación

Publicado por se (7 intervenciones) el 20/04/2018 22:15:13
muchas gracias por la ayuda.

el unico inconveniente es que me está saltando valor nulo del primer arreglo ingresado.

Para ir provando el programa he declardo mi main como:

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
package svr.tarea3;
 
import java.io.IOException;
import java.util.Arrays;
import svr.tarea3.ClassArray;
 
/**
 *
 * @author SVR
 */
public class SVRTarea3 {
 
    /**
     * @param args the command line arguments
     * @throws java.io.IOException
     */
 
    public static void main(String[] args) throws IOException {
 
        float m[] = {8f, 4f, 12f};
        float n[] = {8f, 4f, 12f};
        float r[] = {8f, 6f, 12f};
 
        ClassArray A = new ClassArray (m);
        ClassArray B = new ClassArray (n);
        ClassArray C = new ClassArray (r);
 
        System.out.println("arreglo A: " + A.toString());
        System.out.println("Elemento máximo de A: " + A.elementomaximo());
        System.out.println("Suma de elementos de A = " + A.sumaelementos());
        System.out.println("Media Aritmética de A = " + A.mediaAritmetica());
        System.out.println("Compara arreglos A con B: " + (A.compara(B)?"iguales"."diferentes"));
        System.out.println("Compara arreglos A con C: " + (A.compara(C)?"iguales"."diferentes"));
 
        C = A.sumaArreglos(B);
        System.out.println("Arreglo C = A + B = ");
        C.imprimeArreglo();
 
        C.setArray();
        C.imprimeArreglo();
 
    }
}

y mi objeto como:

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package svr.tarea3;
 
import java.util.Arrays;
import java.util.Scanner;
 
public class ClassArray {
    private float arreglo[];
    int nroElementos, b;
    float ArregloAux[];
 
    Scanner S = new Scanner(System.in);
 
    public ClassArray (int nroElementos){
        arreglo = new float [nroElementos];
        }
 
    public ClassArray(float ArregloAux[] ){
         arreglo = ArregloAux;
        }
 
    public void setArray(){
 
        float arreglo[] = new float[nroElementos];
 
        if (nroElementos > 1) {
 
            for (int i = 0; i < arreglo.length; i++) {
         	System.out.print("Elemento [" + i + "] = ");
 
         	arreglo[ i ] =  S.nextInt();
             }
    }
}
 
    public float elementomaximo(){
         float mayor = (float) arreglo [0];
 
        for (int i = 0; i < arreglo.length; i++) {
            if (arreglo[i] > mayor){
                mayor = (float) arreglo[i];
            }
        }
        return mayor;
    }
 
    public float sumaelementos(){
        int suma = 0;
 
        for (int i = 0; i < arreglo.length; i++) {
            suma += arreglo[i];
        }
        return suma;
    }
 
    public float mediaAritmetica(){
         float mediaAritmetica = 0;
 
        for (int i = 0; i < arreglo.length; i++) {
            mediaAritmetica += arreglo[i];
        }
        return (float) (mediaAritmetica/arreglo.length);
    }
 
    public boolean compara(ClassArray arreglo2){
 
        boolean b = Arrays.equals(arreglo, arreglo);
 
        return false;
    }
 
 
    public ClassArray sumaArreglos (ClassArray arreglo2){
         for (int i=0; i<arreglo.length;i++){
                arreglo[i] = arreglo[i] + arreglo[i];
    }
        return null;
 
}
 
    @Override
    public String toString(){
        return null;
         //Implementar
    }
 
    public void imprimeArreglo(){
         //Implementar
    }
}

y estoy obteniendo estos valores en mi ouput:

arreglo A: null
Elemento máximo de A: 12.0
Suma de elementos de A = 24.0
Media Aritmética de A = 8.0
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
at svr.tarea3.SVRTarea3.main(SVRTarea3.java:37)
C:\Users\SVR\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)
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: 90
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Nuevo en programación

Publicado por Simon (25 intervenciones) el 20/04/2018 23:39:53
cuando imprimes una variable llama al toString directamente -> system.out.println(variable) = system.out.println(variable.toString) -> en el arreglo de A te devuelve null porque en el toString tienes que devuelva un null, tienes que hcer que saque un string con los valores que te interesen. Si no no te sacaria ningun valor en elemento maximo etc. Si aun asi no te va esa parte prueba cambando el 2 contructor de esta forma ->
1
2
3
4
public ...(float arrAux[]) {
arreglo = new float[arrAux.length];
arreglo  = arrAux;
}

Tambien veo que tienes un setArray, a este no le veo mucho sentido, primero no recibe ningun parametro y tienes el constructor para iniciarlo como quieras, tambien llama a una variable nroElementos que no se de donde la recibe jeje y puede que por eso salte la excepcio
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
sin imagen de perfil

Nuevo en programación

Publicado por se (7 intervenciones) el 21/04/2018 00:09:51
la idea de los constructores es que luego me permitan ingresar por teclado los arrays, en este momento el main lo tengo como prueba para ir viendo si mis métodos y mi clase están siendo bien definidos.

Recién llevo dos semanas en Java y estoy experimentando y aprendiendo pasito a pasito.

Gracias, no me había percatado del null en mi toString ;(
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 kingk
Val: 247
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Nuevo en programación

Publicado por kingk (108 intervenciones) el 20/04/2018 23:48:54
Hola, la razon por la que te sale null, es porque en el método toString() que definiste, retornas el valor null. Debes definir lo que esperas que te devuelva el método toString. Y en el método: compara, de tu clase Array lo que supongo quieres es comparar el array del objeto A y el objeto B; Para ello seria de la siguiente manera:

1
2
3
4
5
6
7
8
9
//Defines un método que te retorne el arreglo de la Clase ClassArray. 
public float[] getArray(){
    return arreglo;
}
//Método compara
public boolean compara(ClassArray arreglo2){
    boolean b=Arrays.equals(arreglo, arreglo2.getArray());
    return b;
}
Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Nuevo en programación

Publicado por se (7 intervenciones) el 21/04/2018 00:28:55
Muchas gracias =D

si, recién me percaté que lo tenía como nulo ;(, es mi segunda semana con Java, continuaré practicando y les comento como me fue.
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