Duda Java (para noob)

Iniciado por JonaLamper, 13 Octubre 2014, 13:05 PM

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

JonaLamper

Buenos días gente, resulta que estoy aprendiendo Java y aún tengo un cacao mental con las clases, los métodos, los objetos y toda la película. Total que estoy intentando ejecutar un código que me calcula un combinatorio:

Código (java) [Seleccionar]
package tp.Pr0;

public class FuncsMatematicas {
/* public static int factorial (int n) {
return n;
}*/
public static int combinatorio (int n, int k) {
for (int i = 0; i < 6; ++i) {
for (int j = 0; j <= i; ++j)
System.out.print(FuncsMatematicas.combinatorio(i, j) + " ");
System.out.println();
}
}
public static void main (String args[]) {
FuncsMatematicas.combinatorio(4, 2);
}
}


El problema es que en la línea 7 me da el siguiente error: "Este método debe devolver un resultado tipo int."

No sé si es que se me escapa algo o es que tengo los conocimiento demasiado verdes (o ambas cosas). De cualquier manera, gracias de ante mano.

PD: se admiten consejos para los que estamos aprendiendo Java  ;D
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

engel lex

No se mucho.... pero si te pide retornar un tipo interna no deberías tener un

Código (java) [Seleccionar]
return numero;

O su equivalente para java?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

someRandomCode

Cambia la funcion para que no retorne nada (volvela void)

.rn3w.

#3
seria asi
Código (java) [Seleccionar]

package tp.Pr0;

public class FuncsMatematicas {
/* public static int factorial (int n) {
return n;
}*/
public static void combinatorio (int n, int k) {
for (int i = 0; i < 6; ++i) {
for (int j = 0; j <= i; ++j)
System.out.print(FuncsMatematicas.combinatorio(i, j) + " ");
System.out.println();
}
}
public static void main (String args[]) {
FuncsMatematicas.combinatorio(4, 2);
}
}


investiga la diferencia entre funcion y procedimiento... suerte

Odai

Esta bien el método...
public  void combinatorio (int n, int k) {
...}

Elimina la palabra static
Ya que static se utiliza para :
Citar
Un Método static:
- Tiene acceso solo a los atributos estáticos de la clase.
- No es necesario instanciar un objeto para poder utilizarlo.
Te recomiendo leer, programación en java 2 : algoritmos, estructuras de datos y programación orientada a objetos de Joyanes.
A mi me gusto bastante el libro.
Tengo demasiadas fantasías para ser una ama de casa.
Marilyn Monroe

ivancea96

Eso mismo lo haces en C, probablemente no te de errores, pero eso es porque en C devuelve 0 por defecto si no me equivoco.

JonaLamper

Lo pongo aquí para no abrir otro hilo:

Quiero hacer un array bidimensional de String e inicializarlo a con el valor "0" a través de su constructora, pero... no me sale :(

Código (java) [Seleccionar]
package ArrayVACIA;

public class Main {
private String[][] array;
private final int filas = 6;
private final int columnas = 6;

public static void main(String[] args) {
Main objeto = new Main();
System.out.println(objeto.array);
}

private Main() {
for (int i=0; i <= this.filas; i++) {
for (int j=0; j <= this.columnas; j++) {
this.array[i][j] = "0";
}
}
}
}



¿Dónde estoy fallando?
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.

Senior++

Jona, una pregunta, tu consigues los ejercicios de un curso en particular o tienes una web de ejercicios? :)

Vendo cuenta de LEAGUE OF LEGENDS lvl 30, EU west, muy barata

ivancea96

No se si podria ser eso, pero prueba a declarar Main() como public.

Además, prueba poniendo new String ... ...

Dices que falla pero, qué problema te dá?

JonaLamper

#9
Lo mismo pero más sencillo. Ahora intento meter en la posición 0,0 del array la palabra "hola" a traves del método setArray para después imprimirlo.

Código (java) [Seleccionar]
package ArrayVACIA;

public class Main {
private String[][] array;
/* private final static int filas = 6;
private final static int columnas = 6;*/

public static void main(String[] args) {
Main ob = new Main();
ob.setArray();
System.out.println(ob.array[0][0]);
}

public void setArray() {
this.array[0][0] = "hola";
}
}


El error:

Exception in thread "main" java.lang.NullPointerException
   at ArrayVACIA.Main.setArray(Main.java:15)
   at ArrayVACIA.Main.main(Main.java:10)

-----------------------------------------------------------------------------------------------------

Me descargué estos dos libros:

- Fundamentos de programación de java, Jorge Martínez Ladrón de Guevara.
- Aprenda java como si estuviera en primero, un puñado de escritores.

Tengo pendiente de leer esto que tiene buena pinta: http://programacion.net/articulo/tutorjava_nivel_basico_97/61

E hice estos ejercicios: http://puntocomnoesunlenguaje.blogspot.com.es/p/ejercicios.html
Utilizar palabras para hablar de palabras es como utilizar un lápiz para hacer un dibujo de ese lápiz sobre el mismo lápiz.