¿Que programa utilizas para diseñar los JFrame en Java?
¿Alguien sabe si al introducir una imagen en un JButton, hay alguna manera para poder redimensionar la imagen que aparezca en el tamaño exacto del botón?
Tengo una imágen más grande que el botón y solo aparece un trozo...
Tengo una dudilla...
public class RepasoEva1
{
public static void main(String[] args)
{
int menu=0;
boolean leido = false;
Scanner teclado = new Scanner(System.in);
do
{
do
{
System.out.println("MENU PRINCIPAL:");
System.out.println("1 - Decir Hola");
System.out.println("2 - Decir Adios");
System.out.println("3 - Salir");
do
{
try
{
menu= teclado.nextInt();
leido = true;
}
catch(Exception e)
{
teclado = new Scanner(System.in);
System.out.println(" ERROR: se esperaba un entero");
}
}while (!leido);
}while (menu <0 || menu >3);
}while (menu !=3);
}
}
No se exactamente que hace esto en el Catch.
teclado = new Scanner(System.in);
Ya que si lo quito me crea un bucle infinito, y si lo dejo funciona de lujo, se que tiene que estar ahí, pero no el porque xD. Si alguien me hace una pequeña referencia...
Un saludo y gracias!
#36 Ok gracias!
#35 Eso lo que hace es que en caso de que no metas un entero, te pida que introduzcas algo por teclado otra vez.
Y si lo quitas, al quedarse la variable "menu" con el caracter no entero que has introducido, se repite una y otra vez.
Según tengo entendido el contenido del catch aparece cuando hay un error en el programa (no se cumple alguna de las funciones del try, le das a una variable mas valor del que le cabe, etc...).
Quiero decir, que como dice #37, utilizarlo como si fuese otro while es... curioso xD.
#38 no es que lo use como si fuera otro while, es el mismo while, lo que pasa es que en el catch se cambia la condición de control del while que es la cosa más fea y poco mantenible del mundo.
Si pasas la linea teclado = new Scanner(System.in); justo antes del try debería funcionar igual y es bastante más acorde con lo que pretende representar un bloque try-catch.
De hecho, ahora que lo pienso... ¿no es completamente innecesario rehacer el scanner? Bastaría con que se ejecutara de nuevo el nextInt(). ¿O se destruye el objeto por alguna razón que no entiendo?
#39 Ahora mismo estoy sin hacer nada de objetos, la verdad que el código es de otra práctica que pille con objetos, no se si influirá con eso. Y ya te digo como lo he pillado de una práctica resuelta lo dejaré así por ahora, si más adelante vemos algo más "innovador" en el sistema try/catch pues mejor, si no ya innovaré algo jeje.
Un saludo y gracias!
#41 Ni yo sé lo que te he contestado xD, pero bueno... jajaja estoy mu quemao ya hoy de picar código xD
#39 Es curioso que si pones otro nextInt() dentro del catch te tira un error, así que el que haya hecho ese ejercicio lo ha debido hacer así por alguna razón desconocida xD
#43 me refiero, si pones un nextInt en el try y otro en el catch ( para que se repita en caso de que el usuario no meta un int, da error ).
#45 Si no lo pones e introduces algo que no sea un int, se queda eso en un bucle infinito en el que te sale el menú y el texto de error, si no me explico bien puedes probarlo en un minuto y se ve facil lo que te digo.
#44 si no lo pones en el catch se repite igual. Estás en un while. Si lo hicieras en el catch, sólo se repite una vez.
#44 sí, vale, si eso ya te lo he leído. A lo que me refiero es... ¿por qué? ¿Por qué hay que recrear el Scanner antes de la siguiente llamada a nextInt()? ¿No será que hay flushear o algo así?
Yo estoy teniendo un error con el plugin para navegadores del último JRE (1.7.0u02). Uso Windows 7 x64, me bajé la JDK para 64 bits, pero no se me carga el plugin en ninguno de los navegadores que lo he usado (Firefox, Chrome, IE, IEx64). En principio pensé que sería porque al ser la versión de JRE de 64 bits, no funciona en navegadores de 32 bits, como el firefox, por ejemplo, pero es que en IEx64 tampoco se me cargan los Applets que estoy programando...
Ya he mirado en la configuración de java que el plugin esté activado para navegadores tipo Mozilla, también he buscado información por internet, y mis applets funcionan seguro, porque estoy programando desde Eclipse y ahí puedo comprobar que van bien. También los he probado en un windows xp (32 bits) y ahí sí funciona bien el plugin para firefox.
¿Alguna idea?
#46 pero no carga el plugin o no carga el applet? Si el plugin carga, mira a ver qué te dice la consola. Si ni siquiera te carga el plugin, ¿te fallan todos los applets o sólo los tuyos? Si funciona en el resto de applets y el tuyo tira en Eclipse, has embebido mal el objeto.
OJO, que funcione en Eclipse con el AppletViewer no significa que funcione en un applet por defecto. La implementación es ligeramente más permisiva en el AppletViewer.
OJO2, quizá si estás tirando de algún tipo de DLL (por ejemplo, si usas LWJGL para usar OpenGL en el applet) te falte referenciar los binarios de 64bits.
#47, no carga el plugin, no me sale en la lista de plugins. Fallan todos los applets, porque en la página de Oracle en la que me dice si está correctamente instalado, sale que no. El objeto está bien embebido, porque lo he probado en otro ordenador con windows xp de 32 bits y funciona correctamente. Sobre el último párrafo, no, no estoy tirando de DLL ni nada extravagante, es una aplicación usando Swing superbásica.
Estoy casi seguro de que el problema es de la versión x64 de la JRE 1.7.0u2, porque esa misma versión, pero de 32 bits, la probé en otro ordenador con windows xp y funciona. También probé a instalar la de x64 en otro ordenador distinto con Windows 7 de 64 bits y tampoco iba...
Yo tengo una dudilla de JSP pero la pongo aqui de todas formas a ver si alguien sabe algo.
Se pueden pasar valores de JSP a javascript sin usar cookies?
Buenas, expongo la duda sin más dilacion:
Tengo que calcular el tiempo que tarda una función en ejecutarse, estoy en Ubuntu concretamente, y no tengo ni puta idea de como es el método getMiliseconds o algo así para obtener el tiempo de reloj del pc y luego restarlo una vez haya obtenido el tiempo. Alguno me podría echar una mano? no encontré nada que me funcionase en google >.<
Me ha surgido una dudilla, para algunos será estúpida pero es que me he quedad owned... Como puedo mostrar dos variables sin sumarlas... os pongo el ejemplo...
for (int calificacion = 1; calificacion < frecuencia.length; calificacion++)
{
System.out.println(calificacion + frecuencia[calificacion]);
}
Querría visualizar algo así:
1 3
2 5
3 2
. .
. .
. .
EDITO: es lo que tiene llevar un tiempo dandole vueltas sin estar en lo que se esta xD
System.out.println(calificacion +" "+ frecuencia[calificacion]);
Tenia que poner el espacio, que estoy gilipollas xD
#52 Quizá con un \t (tabulación) te quede más bonito, es sólo cuestión de estetica jeje
Yo... hacía bien lo de los milisegundos, pero le pasaba a la función un número que no permitía T_T, y claro, no hacía nada y me devolvía el mismo tiempo, ya está todo solucionado xD
Una duda que espero que sea sencillita, hay alguna clase y/o funcion que vaya agregando numeros a una "cadena de numeros".
Es decir, que sea lo mas parecido a un String ( lo he intentado hacer con un String y se complica mucho el tema entre Parse Int etc etc )
P ej. Tenemos el numero 123, el usuario introduce el numero 1 y quiero que la variable añada ese 1 al final de la cadena, quedando 1231, con ese numero luego tengo que poder realizar operaciones, así que no puede quedar con String, Array ni nada por el estilo.
¿Alguna idea?
Esa cadena para sumarla como entero, lo conviertes con:
Integer.parseInt(String);
No tiene ninguna complicación la conversión creo, y lo de concatenar en el "String" vas concatenando no veo ninguna dificultad creo yo.
Una duda de formato... usáis print o prinf ?? Es que desde que empecé el curso estoy con el print y println, pero a la hora de ajustar veo más bien usar el printf y no usar los + para concatenar y usar mejor las , .
A mí me queda así:
public static int concatenar(Integer num, Integer nuevoNum){
StringBuffer cadena = new StringBuffer( num.toString()+nuevoNum.toString());
num = Integer.parseInt(cadena.toString());
return num;
}//fin concatenar(2Integers)
Lo hago con StringBuffer porque gestiona mejor la memoria cuando le sumas cosas, o eso me han dicho.
Soy muy novato así que es muy posible que haya soluciones mejores.
#57 No estás usando para nada StringBuffer, estás usando la concatenación con el + de strings (string + string) y creando un objeto StringBuffer con ese contenido.
Tienes que usar el método "append" de StringBuffer o StringBuilder, una por string.
Aquí te hablan del tema de la eficiencia y ponen un código de ejemplo para provarla http://www.dosideas.com/noticias/java/339-string-vs-stringbuffer-vs-stringbuilder.html
Ejecutados en mi pc (el código que ponen en esa web para medir los rendimientos) me dan:
Tiempo del StringBuffer: 46 milisegundos
Tiempo del StringBuilder: 24 milisegundos
Operador suma: Lo he parado, lleva minutos y aun no ha acabado
Pero bueno, que si se usa poco un + tampoco hace daño.
Buenas! Posteo para ver si podéis ayudarme a resolver esta duda que tengo:
Tengo que hacer un programa muy simple, consiste en que me ordene de menor a mayor una serie de caracteres/números que el usuario mismo introduce.
He hecho una especie de ordenación de burbuja pero no he querido basarme en otros códigos, me gusta estrujarme el cerebro, pero no le encuentro sentido a lo que me pasa aquí, este es el código:
import java.io.*;
public class ex12 {
public static void main (String args[]){
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader buffer = new BufferedReader(isr);
try{
System.out.println("Escribe los caracteres que quieras para que sean ordenados alfabéticamente");
String intro = buffer.readLine();
int num = intro.length();
char[][] hola = new char[1][num];
char a;
int menor = 0;
System.out.println("Se van a ordenar " + num + " caracteres...");
for(int y = 0; y < num; y++){
hola[0][y] = intro.charAt(y);
}
for(int y = 0; y < num - 1; y++){
if(hola[0][y] < hola[0][y + 1] && y != (num)){
menor++;
}
if(hola[0][y] == hola[0][y + 1] && y != (num)){
}
if(hola[0][y] > hola[0][y + 1] && y != (num)){
a = hola[0][y + 1];
hola[0][y + 1] = hola[0][y];
hola[0][y] = a;
y = 0;
}
if(y == (num - 1)){
if(menor == (num)){
}
else{
}
}
}
for(int y = 0; y < num; y++){
System.out.print(hola[0][y] + " ");
}
}
catch(Exception e){
System.out.println("Error en la introduccion de datos por parte del usuario");
}
}
}
El caso es que con cadenas complejas de caracteres, el programa funciona correctamente, ejemplo:
Escribe los caracteres que quieras para que sean ordenados alfabéticamente
iadgiuesghlerjghlskjdghklajsfglskjdgskljdfhsiefhslkdjhg
Se van a ordenar 55 caracteres...
a a d d d d d e e e f f f g g g g g g g h h h h h h i i i j j j j j j k k k k k l l l l l l r s s s s s s s u
Sin embargo, si pongo un simple "omg", no me lo ordena como debería (o eso, o me estoy olvidando del abecedario, o ascii se está desordenando a sí mismo):
Escribe los caracteres que quieras para que sean ordenados alfabéticamente
omg
Se van a ordenar 3 caracteres...
m g o
Si uso otras combinaciones se ordena correctamente, pero en esta (que la hice por probar, pero me frustra que no funcione bien) no tira...
#59 te estás frustrando porque el código es una mierda (con perdón.) Aparte de los if vacíos (:S) modificas el valor del contador dentro del bucle, lo cual no tiene sentido dentro de un for. Para eso usa un while que es más claro y muestra mejor tus inte3nciones.
Te recomiendo que antes que estrujarte la cabeza entiendas bien algoritmos básicos. Hazte el bubblesort BIEN y ya coges ideas para futuros algoritmos. Si no conoces bien las estructuras básicas te saldrá mal sí o sí. La algoritmia es complicada y más si no tienes experiencia previa.
Así entre la maraña de código he podido ver que vuelves y=0 en cuanto encuentras un swap. ¡Mal! Hazte la cadena entera, no tienes que reiniciar cada vez que hagas swap. Cuando acabes la cadena, si ha habido swap comienzas de nuevo. Si no ha habido swap, es que ya está ordenado.