Java - El resultado de un factorial cambia dependiendo de la posicion del codigo.

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

El resultado de un factorial cambia dependiendo de la posicion del codigo.

Publicado por Jorge (6 intervenciones) el 19/03/2019 20:03:54
Primero hice un constructor con variable n en class.

1
2
3
4
5
6
7
public class Numero {
 
	private int n;
 
	public Numero(int n) {
		this.n=n;
	}

luego hago un metodo de factorial con la variable n en el class.

1
2
3
4
5
6
7
8
9
10
11
12
public int calcularFactorial() {
 
		int fact=1;
 
        for(int i=1;i<=n;i++)
  	  {
 
    	   fact=fact*i;
	  }
 
        return fact;
	}

y el problema es que cuando ejecuto el metodo desde el main, el resultado cambia dependiendo de donde pongo el siguiente codigo en el main: System.out.println("Calcular Factorial: " + n.calcularFactorial());
Aca les dejo dos fotos para comprobar:

dsadsad
1231
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: 166
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

El resultado de un factorial cambia dependiendo de la posicion del codigo.

Publicado por Cesar (52 intervenciones) el 19/03/2019 20:07:56
Hola.

A mi me suena a que en algun metodo, estas sobreescribiendo el valor de n.

Necesitarias publicar la clase Numero completa, para poderte ayudar.
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
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

El resultado de un factorial cambia dependiendo de la posicion del codigo.

Publicado por Jorge (6 intervenciones) el 19/03/2019 21:02:18
pues aqui va:

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package numero;
 
public class Numero {
 
	private int n;
 
	public Numero(int n) {
		this.n=n;
	}
 
	public int sumar(int n1) {
		int resultado;
		resultado=n+n1;
		return resultado;
	}
 
	public int multiplicar(int n1) {
		int resultado;
		resultado=n*n1;
		return resultado;
	}
 
	public boolean esPar() {
		if(n%2==0)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
 
	public boolean esPrimo() {
 
		boolean flag = true;
 
		if(n==1)
		{
			return false;
		}
 
 
		for(int i=2; i<n; i++) {
			if(n%2==0)
			{
				flag = false;
			}
		}
 
		return flag;
	}
 
	public String convertirAString() {
		return String.valueOf(n); //cambia el numero a un string (ej: 100 de int a 100 de string)
	}
 
	public double convertirDouble() {
		String convierte = "500";
		return Double.parseDouble(convierte);
	}
 
	public double calcularPotencia(int exp) {
		return Math.pow(n,exp);
	}
 
	public String pasarBase2() {
		int resultado=0;
		String binario="";
 
		while (n>0)
		{
			resultado = (n%2);
			binario = resultado + binario;
			n = n/2;
		}
 
		return binario;
	}
 
	public int calcularFactorial() {
 
		int fact=1;
 
        for(int i=1;i<=n;i++)
  	  {
 
    	   fact=fact*i;
	  }
 
        return fact;
	}
 
	public int numeroCombinatorio(int n1)
	{
		int resultadoN = 0,resultadoN1 = 0,resta,resultadoResta = 0,resultadoTotal;
 
		for(int i=1; i<=n; n++) {
			resultadoN = resultadoN + n*i;
		}
 
		for(int i=1; i<=n1; n1++) {
			resultadoN1 = resultadoN1 + n1*i;
		}
 
		resta=n-n1;
 
		if(resta==0)
		{
			resta=1;
		}
		else
		{
		for(int i=1; i<=resta; resta++)
			resultadoResta = resultadoResta + resta*i;
		}
 
 
		return resultadoTotal=(resultadoN/(resultadoN1*resultadoResta));
 
	}
 
 
 
}




Main:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package test;
 
import numero.Numero;
 
public class TestNumero {
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		Numero n = new Numero(3);
 
		System.out.println("Calcular Factorial: " + n.calcularFactorial());
		System.out.println("la suma es: " + n.sumar(6));
		System.out.println("La multiplicacion es: " + n.multiplicar(6));
		System.out.println("Es par?: " + n.esPar());
		System.out.println("Es primo?: " + n.esPrimo());
		System.out.println("Convertir a String: 100" + n.convertirAString());
		System.out.println("Convertir Double: " + n.convertirDouble());
		System.out.println("Calcular potencia: " + n.calcularPotencia(3));
		System.out.println("Pasar a binario: " + n.pasarBase2());
 
	}
 
}
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

El resultado de un factorial cambia dependiendo de la posicion del codigo.

Publicado por Kabuto (1381 intervenciones) el 19/03/2019 22:44:03
Como decía el compañero, aquí estás modificando a n

1
2
3
4
5
6
7
8
9
10
11
12
13
public String pasarBase2() {
    int resultado=0;
    String binario="";
 
    while (n>0)
    {
        resultado = (n%2);
        binario = resultado + binario;
        n = n/2;
    }
 
    return binario;
}

Tendrás que modificar este método para no trabajar con n, sino con una copia suya.
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