Foro de elhacker.net

Programación => Java => Mensaje iniciado por: jandepeich en 13 Junio 2015, 00:32 am



Título: Duda Java rango datos
Publicado por: jandepeich en 13 Junio 2015, 00:32 am
Hola a todos,aqui les dejo mi duda a ver si me la pueden solucionar:

Tengo que hacer una tabla de multiplicar en java la cual me pida un numero inicial(ejemplo:1) y un numero final (ejemplo:3) y que me salga en la consola ese rango de datos(en el ejemplo deberia aparecer la tabla del 1,del 2 y del 3).La tabla de multiplicar la hago bien y la entrada de datos por la consola tambien,pero no consigo que me salga la tabla del 2;solo la del 1 y la 3.
¿Como se haria para que me haga ese rango?
Aqui les dejo el codigo (un desastre) a ver que les parece:

Código:
package actividadesUF1;


import java.util.Scanner;

public class Actividad032 {

public static void main(String[] args) {



int tabla1;

int tabla2;



Scanner leer=new Scanner(System.in);


System.out.println("Escribe rango inicial");

tabla1=leer.nextInt();

System.out.println("Escribe rango final");

tabla2=leer.nextInt();




for(int var1=0;var1<11;var1++) {

if (tabla1<=10){

System.out.println(+tabla1+"x"+var1+"="+(var1*tabla1));


}

else if(tabla1>10){

System.out.println("Vuelva a introducir un numero");
}
}
leer.close();





for(int var2=0;var2<11;var2++) {

if (tabla2<=10){

System.out.println(+tabla2+"x"+var2+"="+(var2*tabla2));


}

else if(tabla2>10){

System.out.println("Vuelva a introducir un numero");
}
}
leer.close();


}
}



gracias


Título: Re: Duda Java rango datos
Publicado por: jandepeich en 13 Junio 2015, 03:43 am
Que habria que cambiar aqui:
Código:
System.out.println(+tabla1+"x"+var1+"="+(var1*tabla1));
para poder sacar la tabla de multiplicar de 1,2 y 3(o sea las tablas de 1-3)

Se lo agradezco mucho si me ayudan que me estoy volviendo loco.


Título: Re: Duda Java rango datos
Publicado por: Usuario Invitado en 13 Junio 2015, 16:12 pm
Te dejo una clase que estoy haciendo recién para operaciones matemáticas:

Código
  1. package org.educacode.mathio;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.concurrent.CopyOnWriteArrayList;
  6.  
  7. /**
  8.  * Math util methods and classes
  9.  * @author Gustavo Garsaky
  10.  * @version 0.0.1
  11. */
  12. public class MathIO {
  13. public final static PrimeNumbers PRIME_NUMBERS = new PrimeNumbers();
  14.  
  15. public final static class PrimeNumbers {
  16.  
  17. public List<Integer> listPrimesUntil(int limit) {
  18. List<Integer> naturals = new CopyOnWriteArrayList<>();
  19. // init naturals
  20. for(int i=2; i<=limit; i++) {
  21. naturals.add(i);
  22. }
  23. for(Integer current : naturals) {
  24. discardMultiples(naturals, getMultiplesOf(current, naturals.size()));
  25. // if discard continue, that means the process should continue
  26. if(discard(current, naturals.size())) {
  27. continue;
  28. } else {
  29. break;
  30. }
  31. }
  32. List<Integer> primes = naturals;
  33. return primes;
  34. }
  35. /**
  36. * check the first natural quad. If it's
  37. * less tan limit, process should continue
  38. * @param firstNatural first natural number
  39. */
  40. private boolean discard(int firstNatural, int limit) {
  41. double firstNaturalQuad = Math.pow(new Double(String.valueOf(firstNatural)), 2.0d);
  42. if(firstNaturalQuad <= limit) {
  43. return true;
  44. }
  45. return false;
  46. }
  47. /**
  48. * Get new list of natural numbers. The new list have all numbers
  49. * that not in multiples of first natural number
  50. * @param naturals Naturals numbers
  51. * @param number Number to get multiples
  52. */
  53. private void discardMultiples(List<Integer> naturals, List<Integer> multiples) {
  54. // check if each multiple is in naturals list.
  55. // if it isn't, append the multiple to new list
  56. for(int i=0; i<multiples.size(); i++) {
  57.             for(int k=0; k<naturals.size(); k++) {
  58.                         if(multiples.get(i) == naturals.get(k)) {
  59.                     naturals.remove(k);
  60.                                  }
  61.             }
  62. }
  63. }
  64. } // end prime numbers class
  65.  
  66.  
  67. /**
  68. * Get the multiples of a number with some limit
  69. * @param number Number to get multiples
  70. * @param limit of multiples to get
  71. */
  72. public static List<Integer> getMultiplesOf(int number, int limit) {
  73. List<Integer> multiples = new ArrayList<>();
  74. for(int i=number; i<limit; i++ ) {
  75. if(i < limit) {
  76. multiples.add(number * i);
  77. }
  78. }
  79. return multiples;
  80. }
  81. /**
  82. * Show a multiplication table of a number with a limit
  83. * @param number Number to get multiplication table
  84. * @param limit Limit of multiplicator
  85. */
  86. public static void showMultipTableOf(int number, int limit) {
  87. for(int i=1; i<=limit; i++) {
  88. System.out.println(number + " x " + i + " = " + (number * i));
  89. }
  90. }
  91. }

De momento saca los números primos de 2 a n-1 y muestra la tabla de multiplicar de un número a n, donde n es el límite del multiplicador.

Por ejemplo, en tu caso, solo haría:

Código
  1. import java.util.Scanner;
  2. import org.educacode.mathio.MathIO;
  3.  
  4. public class MultiplicationTableTest {
  5.  
  6. public static void main(String[] args) {
  7. final Scanner READER = new Scanner(System.in);
  8. int initial;
  9. int last;
  10. int limit;
  11. System.out.println("**** Tabla de multiplicar ****\n\n");
  12. System.out.println("[+] Ingresa en rango los números");
  13. initial = READER.nextInt();
  14. last = READER.nextInt();
  15. System.out.println("[+] Ingrese el límite del multiplicador");
  16. limit = READER.nextInt();
  17. READER.close();
  18. for(int i = initial; i <= last; i++) {
  19. MathIO.showMultipTableOf(i, limit);
  20. }
  21. }
  22.  
  23. }

Y te mostraría las tablas de multiplicar de un rango dado.


Título: Re: Duda Java rango datos
Publicado por: jandepeich en 13 Junio 2015, 23:43 pm
Gracias compañero