masterpok escribió:A ver si alguien me puede echar un cable... Aclaro que estoy muy verde el programación OO así que probablemente esté preguntando alguna tontería .
Vereis, tengo 3 clases:
-Ejemplo: la clase principal que extiende de JApplet. Tiene un metodo createGUI que pondré un poco más abajo.
-areaDibujo: recibe un contenedor por parametro. He creado en ella una funcion que pone un label en el contenedor con el texto que le pase por parametro (ponerLabel("texto"));
-barraMenuEj: una clase que me crea mi barra de menu (implementa actionListener). Se le pasa por parametro el areaDibujo para que sus listeners puedan acceder a las funciones de esa areaDibujo.
el metodo createGUI hace lo siguiente:
private void createGUI() {
areaDibujo miarea = new areaDibujo(getContentPane());
mibarramenu= new barraMenuEj(miarea);
setJMenuBar(mibarramenu.getBarraMenu());
}
Basicamente lo que quiero es que mi programa que es una simple barra de menu y un area vacia, dibuje algo (un label, en este caso) en el area vacía cuando pulso un boton en el menu. El problema es que aunque el actionPerformed se ejecuta bien, al hacer "ponerLabel" desde barraMenuEj no se pinta nada en el area vacía...
Insisto en que seguro que me dejo algo básico, pero estoy muy verde en el tema ^^U.
PD: Lo sé, es una chorrada de programa, pero si consigo ver como enganchar este tipo de cosas, no me costará escalarlo
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package comecocos;
/**
*
* @author ismaelrodriguezmoreno
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println("Depuracion");
Tablero t= new Tablero();
System.out.println("Depuracion");
MiCanvas lienzo = new MiCanvas(t);
System.out.println("Depuracion");
Marco m = new Marco(lienzo);
System.out.println("Depuracion");
Movimientos mov = new Movimientos(t,lienzo);
lienzo.setMueve(mov);
mov.reanudar();
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package comecocos;
/**
*
* @author ismaelrodriguezmoreno
*/
public class Tablero {
String rejilla[] = {"BBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"B............BB............B",
"B.BBBB.BBBBB.BB.BBBBB.BBBB.B",
"BoBBBB.BBBBB.BB.BBBBB.BBBBoB",
"B.BBBB.BBBBB.BB.BBBBB.BBBB.B",
"B..........................B",
"B.BBBB.BB.BBBBBBBB.BB.BBBB.B",
"B.BBBB.BB.BBBBBBBB.BB.BBBB.B",
"B......BB....BB....BB......B",
"BBBBBB.BBBBB BB BBBBB.BBBBBB",
" B.BBBBB BB BBBBB.B ",
" B.BB BB.B ",
" B.BB BB____BB BB.B ",
"BBBBBB.BB B B BB.BBBBBB",
" . B B . ",
"BBBBBB.BB B B BB.BBBBBB",
" B.BB BBBBBBBB BB.B ",
" B.BB BB.B ",
" B.BB BBBBBBBB BB.B ",
"BBBBBB.BB BBBBBBBB BB.BBBBBB",
"B............BB............B",
"B.BBBB.BBBBB.BB.BBBBB.BBBB.B",
"B.BBBB.BBBBB.BB.BBBBB.BBBB.B",
"Bo..BB................BB..oB",
"BBB.BB.BB.BBBBBBBB.BB.BB.BBB",
"BBB.BB.BB.BBBBBBBB.BB.BB.BBB",
"B......BB....BB....BB......B",
"B.BBBBBBBBBB.BB.BBBBBBBBBB.B",
"B.BBBBBBBBBB.BB.BBBBBBBBBB.B",
"B..........................B",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBB"};
static final char BLOQUE = 'B'; // Tipos de celda de Tablero
static final char CASILLA = '.';
static final char CASILLA_VACIA = ' ';
static final char CASILLA_COMIDA = 'o';
static final char PUERTA = '_';
static final char PACMAN = 'X';
private char[][] celdas;
private static final int ANCHO = 28;
private static final int ALTO = 31;
private Pacman pac;
public Tablero(){
System.out.println("Dentro de Tablero");
pac = new Pacman();
System.out.println("Pacman Creado");
String c ;
char carac;
int x=0;
celdas= new char[ALTO][ANCHO];
for(int i=0;i<ALTO;i++){
c=rejilla[i];
for(int j=0;j<ANCHO;j++){
carac=c.charAt(j);
if( carac==BLOQUE)
celdas[i][j]=carac;
if(carac ==CASILLA)
celdas[i][j]=carac;
if(carac ==CASILLA_VACIA)
celdas[i][j]=carac;
if(carac ==CASILLA_COMIDA)
celdas[i][j]=carac;
if(carac ==PUERTA)
celdas[i][j]=carac;
x++;
}
}
celdas[23][13]=PACMAN;
pac.SetDireccion(Pacman.DERECHA);
System.out.println("Fin de tablero");
}
public int Get(int fila,int columna){
return celdas[fila][columna];
}
public void Set(int fila,int columna,char c){
celdas[fila][columna]=c;
}
public int GetFilas(){
return ALTO;
}
public int GetColumnas(){
return ANCHO;
}
public void SetDireccion(int d){
pac.SetDireccion(ALTO);
}
public int PosicionPacman(){
System.out.println("Dentro de posicion Pacman");
Coordenada co = pac.MuevePacman();
Coordenada coord= null;
int dev = 0;
if(celdas[co.GetFila()][co.GetColumna()] == CASILLA ){
celdas[co.GetFila()][co.GetColumna()]= PACMAN;
coord = this.CoordenadaAnterior(co, pac.GetDireccion());
celdas[coord.GetFila()][coord.GetColumna()]= CASILLA_VACIA;
dev=CASILLA;
}
if(celdas[co.GetFila()][co.GetColumna()] == CASILLA_COMIDA){
celdas[co.GetFila()][co.GetColumna()]= PACMAN;
coord = this.CoordenadaAnterior(co, pac.GetDireccion());
celdas[coord.GetFila()][coord.GetColumna()]= CASILLA_VACIA;
dev=CASILLA_COMIDA;
}
if(celdas[co.GetFila()][co.GetColumna()] == CASILLA_VACIA){
celdas[co.GetFila()][co.GetColumna()]= PACMAN;
coord = this.CoordenadaAnterior(co, pac.GetDireccion());
celdas[coord.GetFila()][coord.GetColumna()]= CASILLA_VACIA;
dev=CASILLA_VACIA;
}
if(celdas[co.GetFila()][co.GetColumna()] == BLOQUE){
coord=this.DeterminarPosicion(co,pac.GetDireccion());
celdas[coord.GetFila()][coord.GetColumna()]= PACMAN;
dev=BLOQUE;
}
return dev;
}
private Coordenada DeterminarPosicion(Coordenada cod,int dir){
Coordenada co = null;
if(dir==Pacman.DERECHA){
co = new Coordenada(cod.GetFila(),cod.GetColumna()-1);
}
if(dir==Pacman.IZQUIERDA){
co = new Coordenada(cod.GetFila(),cod.GetColumna()+1);
}
if(dir==Pacman.ARRIBA){
co = new Coordenada(cod.GetFila()-1,cod.GetColumna());
}
if(dir==Pacman.ABAJO){
co = new Coordenada(cod.GetFila()+1,cod.GetColumna());
}
return co;
}
private Coordenada CoordenadaAnterior(Coordenada cod,int dire){
Coordenada co = null;
if(dire == Pacman.ABAJO)
co = new Coordenada(cod.GetFila()+1,cod.GetColumna());
if(dire == Pacman.ARRIBA)
co = new Coordenada(cod.GetFila()-1,cod.GetColumna());
if(dire == Pacman.DERECHA)
co = new Coordenada(cod.GetFila(),cod.GetColumna()+1);
if(dire == Pacman.ABAJO)
co = new Coordenada(cod.GetFila(),cod.GetColumna()-1);
return co;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package comecocos;
/**
*
* @author ismaelrodriguezmoreno
*/
public class Pacman {
private int n_vidas;
static final int ARRIBA = 2;
static final int ABAJO = 0;
static final int DERECHA = 3;
static final int IZQUIERDA = 1;
private Coordenada coord;
private int direccion;
Pacman(){
n_vidas=3;
coord = new Coordenada(23,13);
}
public void SetDireccion(int d){
direccion=d;
}
public int GetDireccion(){
return direccion;
}
public Coordenada MuevePacman(){
switch(direccion){
case IZQUIERDA:
coord.SetColumna(coord.GetColumna()-1);
break;
case DERECHA:
coord.SetColumna(coord.GetColumna()+1);
break;
case ARRIBA:
coord.SetFila(coord.GetFila()-1);
break;
case ABAJO:
coord.SetFila(coord.GetFila()-1);
break;
default:
break;
}
return coord;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package comecocos;
import javax.swing.JLabel;
/**
*
* @author ismaelrodriguezmoreno
*/
public class Movimientos implements Runnable {
private Tablero tab;
private Pacman pac;
private MiCanvas cav=null;
private int puntos;
private JLabel labelPuntuacion;
private boolean continuar = true;
private boolean suspendFlag = true;
Movimientos(Tablero t,MiCanvas c){
tab=t;
cav=c;
puntos=0;
Thread hilo= new Thread(this);
System.out.println("va a comenzar el hilo");
hilo.start();
System.out.println("El hilo a terminado?");
}
Movimientos(Tablero t, Pacman p, MiCanvas c,JLabel label){
tab=t;
pac=p;
cav=c;
puntos=0;
labelPuntuacion=label;
Thread hilo= new Thread(this);
hilo.start();
System.out.println("Comienza el hilo");
}
public void run() {
try{
System.out.println("Dentro de run");
while(continuar){
synchronized(this){
while(suspendFlag){
System.out.println("Antes de esperar");
wait();
System.out.println("Esperando");
}
}
Thread.sleep(500);
System.out.println("El hilo a dormido");
int sit = tab.PosicionPacman();
if(cav!=null)
cav.repaint();
/*if(sit == Tablero.CASILLA)
if(sit == Tablero.CASILLA_COMIDA)
if(sit == Tablero.CASILLA_VACIA)*/
}
/*if((sit==Serpiente.CHOCA_BLOQUE)||(sit==Serpiente.CHOCA_SERPIENTE)){
suspender();
inicializaJuego();
canvas.repaint();
labelPuntuacion.setText("Puntuaci�n = "+puntuacion);
reanudar();
}
else if(m==Serpiente.COME_RATON){
puntuacion++;
labelPuntuacion.setText("Puntuaci�n = "+puntuacion);
}
}
}
catch(InterruptedException e){
System.out.println("Hilo Comecocos interrumpido");
}*/
}
catch(InterruptedException e){
System.out.println("Hilo Comecocos interrumpido");
}
}
public synchronized void reanudar(){
suspendFlag = false;
notify();
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package comecocos;
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.KeyEvent;
/**
*
* @author ismaelrodriguezmoreno
*/
public class MiCanvas extends JPanel implements KeyListener, MouseListener{
private Tablero tab;
private Movimientos mov;
static final int TAM = 20;
MiCanvas(Tablero t) {
tab = t;
//addMouseListener(this);
//addKeyListener(this);
}
@Override
synchronized public void paintComponent(Graphics g){
Graphics screengc=g;
g.setColor(Color.BLACK);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(Color.WHITE);
dibujarTablero(g);
}
private void dibujarTablero(Graphics g){
int x=0,y=0;
int filas = tab.GetFilas();
int columnas = tab.GetColumnas();
for(int i=0;i<filas;i++){
for(int j=0;j<columnas;j++){
if(tab.Get(i,j) == Tablero.BLOQUE){
g.setColor(Color.BLUE);
g.fillRect(x, y, TAM,TAM);
//g.drawRect(x,y,TAM,TAM);
}
if(tab.Get(i,j) == Tablero.CASILLA){
g.setColor(Color.YELLOW);
g.fillArc(x+(TAM/2)-3, y+(TAM/2)-3, 6, 6, 0,360);
}
if(tab.Get(i,j) == Tablero.CASILLA_COMIDA){
g.setColor(Color.YELLOW);
g.fillArc(x+(TAM/2)-5, y+(TAM/2)-5,10,10, 0,360);
}
if(tab.Get(i,j) == Tablero.PUERTA){
g.setColor(Color.WHITE);
g.drawLine(x, y+TAM, x+TAM, y+TAM);
}
if(tab.Get(i, j)== Tablero.PACMAN){
g.setColor(Color.YELLOW);
g.fillArc(x+(TAM/2)-9, y+(TAM/2)-9, 18, 18, 0, 360);
}
x+=TAM;
}
x=0;
y+=TAM;
}
}
@Override
public boolean isFocusTraversable(){
return true;
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
requestFocus();
}
public void mouseExited(MouseEvent e){
}
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void keyTyped(KeyEvent evt){
}
public void setMueve(Movimientos m){
mov=m;
}
public void keyReleased(KeyEvent evt){
// System.out.println("KeyReleased getKeyCode="+evt.getKeyCode());
// System.out.println("KeyReleased getKeyChar="+evt.getKeyChar());
// System.out.println("KeyReleased getModifiers="+evt.getModifiers());
}
public void keyPressed(KeyEvent evt) {
System.out.println("Se ha producido un evento");
if(evt.getKeyCode()==KeyEvent.VK_UP){
System.out.println("Pulsado ARRIBA");
tab.SetDireccion(Pacman.ARRIBA);
}
else if(evt.getKeyCode()==KeyEvent.VK_DOWN){
System.out.println("Pulsado ABAJO");
tab.SetDireccion(Pacman.ABAJO);
}
else if(evt.getKeyCode()==KeyEvent.VK_LEFT){
System.out.println("Pulsado IZQUIERDA");
tab.SetDireccion(Pacman.IZQUIERDA);
}
else if(evt.getKeyCode()==KeyEvent.VK_RIGHT){
System.out.println("Pulsado DERECHA");
tab.SetDireccion(Pacman.DERECHA);
}
/*else if(evt.getKeyCode()==KeyEvent.VK_SPACE){
if(!mueve.getParado())
mueve.suspender();
else
mueve.reanudar();
}*/
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package comecocos;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author ismaelrodriguezmoreno
*/
public class Marco extends JFrame {
private MiCanvas lienzo;
private JLabel ptos;
public Marco(MiCanvas c){
/*lienzo = c;
Button boton = new Button("Salir");
boton.setName("Salir");
ptos=new Label("Puntuacion = 0");
setSize(600,700);
setLayout(new BorderLayout());
add("North",ptos);
add("Center",lienzo);
add("South",boton);
setVisible(true);
lienzo.setVisible(true);
boton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(event.toString().indexOf("on Salir") != -1) {
System.exit(0);
}
}
}
);*/
lienzo = c;
JButton boton = new JButton("Salir");
boton.setName("Salir");
ptos=new JLabel("Puntuacion = 0");
setSize(600,700);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(ptos,BorderLayout.NORTH);
getContentPane().add(lienzo,BorderLayout.CENTER);
getContentPane().add(boton,BorderLayout.SOUTH);
setVisible(true);
pack();
boton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(event.toString().indexOf("on Salir") != -1) {
System.exit(0);
}
}
}
);
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package comecocos;
/**
*
* @author ismaelrodriguezmoreno
*/
public class Coordenada {
private int fila;
private int columna;
Coordenada(){
fila=0;
columna=0;
}
Coordenada(int f,int c){
fila=f;
columna =c;
}
public void SetFila(int f){
fila=f;
}
public int GetFila(){
return fila;
}
public void SetColumna(int c){
columna=c;
}
public int GetColumna(){
return columna;
}
public void SetCoordenada(int f, int c){
fila=c;
columna=c;
}
public Coordenada GetCoordenada(){
return this;
}
}
Muchas gracias, por alguna razón no me llegó el aviso de que alguien había respondido ^^U.Puyover escribió:Crea la label sin texto y luego cuando quieras "crearla" simplemente le añades el texto.
Un saludo.
pasteles escribió:Buenas estoy haciendo un comecocos, y ahora mismo lo dibujo y empieza el movimiento automaticamente hacia la derecha, pero cuando intento mover el pacman, no me coge los eventos de teclado, y no se porque puede ser....
ShinMegami escribió:hola, tengo una duda, soy bastante amateur en esto pero tengo algun programita que hace 4 tonterias... pero claro, a mi me gustaria hacer un ejecutable para pasarselo a mis amigos (me hace bastante ilusion ) como se hace, porque yo lo corro en el jcreator que tiene una ventanita para hacerlo correr, pero claro no le voy a ir diciendo a mis amigos k se creen el jcreator i tal, xD i tampoco les pedire que lo corran en el terminal (porque no sabrian xD)
saludos
ShinMegami escribió:hola, tengo una duda, soy bastante amateur en esto pero tengo algun programita que hace 4 tonterias... pero claro, a mi me gustaria hacer un ejecutable para pasarselo a mis amigos (me hace bastante ilusion ) como se hace, porque yo lo corro en el jcreator que tiene una ventanita para hacerlo correr, pero claro no le voy a ir diciendo a mis amigos k se creen el jcreator i tal, xD i tampoco les pedire que lo corran en el terminal (porque no sabrian xD)
saludos
amarco90 escribió:ShinMegami escribió:hola, tengo una duda, soy bastante amateur en esto pero tengo algun programita que hace 4 tonterias... pero claro, a mi me gustaria hacer un ejecutable para pasarselo a mis amigos (me hace bastante ilusion ) como se hace, porque yo lo corro en el jcreator que tiene una ventanita para hacerlo correr, pero claro no le voy a ir diciendo a mis amigos k se creen el jcreator i tal, xD i tampoco les pedire que lo corran en el terminal (porque no sabrian xD)
saludos
echale una mirada a esto http://java.sun.com/docs/books/tutorial/deployment/jar/index.html
Ahora una duda que tengo yo, es posible hacer que un programa se adapte al look and feel de cada usuario? es decir que si por ejemplo yo ejecuto mi programa en ubuntu tenga el look and feel de ubuntu, en xp el de xp, etc.
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {}
Jonri escribió:Este codigo deberia funcionar:try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {}
Debe ir en el main.
un saludo
cracker_ct escribió:Vaya!!! Resulta que hay un hilo oficial de Java y yo sin enterarme!!
Me gusta mucho programar, y con Java encontré un filón, se puede hacer prácticamente cualquier cosa con él. Mi última aplicación seria fue una base de datos en Access a la que se hacían consultas y modificaciones desde un cliente remoto, todo ello a través de sockets. Al principio lo vi muy complicado, pero luego fue bastante sencillo (así fue que me saqué un 8.5 en esa asignatura casi sin esfuerzo).
Mis próximos proyectos son hacer lo mismo pero con una base de datos SQL, crearme un chat y aprender a programar Java para móviles. Yo utilizo Eclipse (soy usuario Linux), ¿alguno sabe darme alguna orientación para empezar en el tema de J2ME?
Saludos.
cracker_ct escribió:x86 64? Mi micro es de 32 bits, eso no sería problema en mi caso... EclipseME es un plugin de Eclipse? Digo yo que si es un plugin se instalará como todos los demás...
for (cuenta=0;cuenta<intentos;cuenta++){
cadena=JOptionPane.showInputDialog("Introduce "+y+" números.");
for(i=0;i<cadena.length();i++){
arraycadena[i]=Integer.parseInt(cadena.charAt(i)+"");
}
dificultad=JOptionPane.showInputDialog("Ahora selecciona el nivel de dificultad (Fácil, Normal, Difícil), "+nombre+".");
while (!dificultad.equalsIgnoreCase("facil") && !dificultad.equalsIgnoreCase("normal") &&!dificultad.equalsIgnoreCase("dificil") )
dificultad=JOptionPane.showInputDialog("Ahora selecciona el nivel de dificultad (Fácil, Normal, Difícil), "+nombre+".");
if (dificultad.equalsIgnoreCase("facil")){
...}etc etc
JJMD escribió:Primera duda:
JJMD escribió:Segunda duda:
enano007jr escribió:JJMD escribió:Primera duda:
prueba con los JTextField-http://www.chuidiang.com/chuwiki/index.php?title=JTextField_que_solo_admite_digitosJJMD escribió:Segunda duda:
mira haber si puedes ponerlo con los simbolos html para las tildes o poner las dificultades en ingles
monoculero escribió:Para comparar cadenas yo uso el metodo compareTo() de la siguiente manera:
String cad = "monoculero";
if(cad.compareTo("monoculero")==0){
System.out.println("COINCIDE!!");
}
else{
System.out.println("NO Coincide!!");
}
La comparacion de la cadena se hace simbolo a simbolo, supongo que para las tildes te funcionará.
krycek_ escribió:por cierto tanto el compareTo como el equals tienen una version que ignora las mayusculas, que sorprendentemente se llama compareToIgnoreCase y equalsIgnoreCase
public class Cadenas {
...
...
...
/**
* Compara dos cadenas
* blablabla
*/
public static boolean iguales(String cad1,String cad2){
return (cad1 != null && cad2 != null && cad1.trim().equalsIgnoreCase(cad2.trim()));
}
...
}
Puyover escribió:Deberías de ejecutar el main en un hilo y tu programa en otro y hacer un pack();
Así no te deberían de desaparecer los elementos.
javax.swing.SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createGUI(); //Desde ahi arranca mi programa
}
});
cracker_ct escribió:Offtopic: cómo se hace para poner el código de esa forma que lo ponéis?
Exception in thread "AWT-EventQueue-3" java.security.AccessControlException: access denied (java.io.FilePermission icons/nuevaventana.png read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
...blabladelmismotipo...
cracker_ct escribió:gracias xDD
Gracias, al final lo que resultaba era que tenía que firmar el applet ^^UPuyover escribió:Deberías cambiar los permisos de los archivos que quieras leer a 744.
Un saludo.
for (i = 0; i < 21; i++) {
expresionO = funcion(s);
expresionDerivada = derivada(s);
expresionS = new Format("%.2E").format(expresionO);
expresionDS = new Format("%.2E").format(expresionDerivada);
if (i < 10) {
buffer += i + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
} else {
buffer += i + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
}
sant = s;
s = (Double) (s - expresionO / expresionDerivada);
salidaArea.setText("");
if (s == sant) {
if (i < 10) {
buffer += i + 1 + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
} else {
buffer += i + 1 + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
}
break;
}
Jonri escribió:El error puede estar en que ese numero es menor que el Numero Positivo Minimo del tipo float y por eso no te lo pueda mostrar.
un saludo
<h:inputText id="usuario" value="#{beangestionado.usuario}">
<f:validateLength minimu="1"/>
</h:inputText>
...
<td><h:messages for="usuario"></td>
currentLocale = new Locale("en", "US");
languageStrings = ResourceBundle.getBundle("opentype/lang/LanguageBundle", currentLocale);
currentLocale = new Locale("es", "ES");
languageStrings = ResourceBundle.getBundle("opentype/lang/LanguageBundle", currentLocale);
Puyover escribió:Tengo un problemilla... Estoy intentando hacer un programa que me calcule las raices de una función mediante el método de newton y vale, funciona perfectamente... si no fuera por un pequeño detalle.
Os pongo el código y una captura del error:for (i = 0; i < 21; i++) {
expresionO = funcion(s);
expresionDerivada = derivada(s);
expresionS = new Format("%.2E").format(expresionO);
expresionDS = new Format("%.2E").format(expresionDerivada);
if (i < 10) {
buffer += i + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
} else {
buffer += i + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
}
sant = s;
s = (Double) (s - expresionO / expresionDerivada);
salidaArea.setText("");
if (s == sant) {
if (i < 10) {
buffer += i + 1 + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
} else {
buffer += i + 1 + ". " + formatea.format(s) + " "
+ expresionS + "\t" + expresionDS + "\n";
}
break;
}
Como veis en las dos últimas líneas f(s(n)) vale 0.00E+000 cuando debería de valer 4.44E-16 y la cosa es que las demás operaciones las hace bien el cachondo
He de decir que uso dos librerías externas: JEP (Java Expresion Parser) y Format, que sirven para reconocer expresiones matemáticas y formatear la salida respectivamente. Esas funcionan perfectamente y ahí no está el problema porque hasta con un println simple me muestra 0.0000000000000000 -.-U
Y por mas que le doy vueltas no caigo en el error y me está sacando ya de quicio
A ver si podéis iluminarme >.<
private int dias_del_mes() //AQUI ME DICE QUE SE TIENE QUE DEVOLVER UN ENTERO, Y EN TODOS LOS RETURN TENGO ENTEROS :s
{
if (mes==4||mes==6||mes==9||mes==11)
{
return 30;
}
if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12)
{
return 31;
}
if(mes==2)
{
bisiesto=es_bisiesto();
if(bisiesto==true)
{
return 29;
}
else
{
return 28;
}
}
}
String formato_largo()
{
Aquí deberia devolver una fecha en formato largo , por ejemplo: 25 del 1 de 2009.
¿Debería crear un nuevo objeto string y guardarlo dentro?
}
Iverson88 escribió:...
int metodo(int a)
{
if (a > 20)
{
return 20;
}
}
int metodo()
{
if (true)
{
return 20;
}
}
return -1;
int longitud;
int i;
int [] posicion=new int [35];
String cadena1=Terminal.leeCadena("Introduce nombre y apellidos:");
String cadena2="";
longitud=cadena1.length();
for(i=0;i<longitud;i++)
{
posicion[i]=cadena1.indexOf(" ",i);
}
for(i=0;i<longitud;i++)
{
if(posicion[i]!=-1)
{
if(posicion[i+1]!=posicion[i])
{
System.out.println(posicion[i]);
}
}
}
Iverson88 escribió:Gracias FOX, era eso
Bueno tengo otro problema (aparte de los del anterior mensaje).
Tengo una clase principal, que leer por teclado una cadena String, y que formar otra con las iniciales de palabras. Tengo hecho para localizar los espacios, por lo tanto si despues de un espacio va otra cosa que no es un espacio se puede considerar una inicial no? El código es el siguiente:int longitud;
int i;
int [] posicion=new int [35];
String cadena1=Terminal.leeCadena("Introduce nombre y apellidos:");
String cadena2="";
longitud=cadena1.length();
for(i=0;i<longitud;i++)
{
posicion[i]=cadena1.indexOf(" ",i);
}
for(i=0;i<longitud;i++)
{
if(posicion[i]!=-1)
{
if(posicion[i+1]!=posicion[i])
{
System.out.println(posicion[i]);
}
}
}
En el System.out.println podría cambiarlo por un condicional que controlase si lo siguiente es o no un espacio no? Una vez hecho eso procedo a mandar el carácter a otra cadena, es aqui la cuestión, existe algún método?
Iverson88 escribió:Gracias FOX, era eso
Bueno tengo otro problema (aparte de los del anterior mensaje).
Tengo una clase principal, que leer por teclado una cadena String, y que formar otra con las iniciales de palabras. Tengo hecho para localizar los espacios, por lo tanto si despues de un espacio va otra cosa que no es un espacio se puede considerar una inicial no? El código es el siguiente:int longitud;
int i;
int [] posicion=new int [35];
String cadena1=Terminal.leeCadena("Introduce nombre y apellidos:");
String cadena2="";
longitud=cadena1.length();
for(i=0;i<longitud;i++)
{
posicion[i]=cadena1.indexOf(" ",i);
}
for(i=0;i<longitud;i++)
{
if(posicion[i]!=-1)
{
if(posicion[i+1]!=posicion[i])
{
System.out.println(posicion[i]);
}
}
}
En el System.out.println podría cambiarlo por un condicional que controlase si lo siguiente es o no un espacio no? Una vez hecho eso procedo a mandar el carácter a otra cadena, es aqui la cuestión, existe algún método?
int j = 0;
for(int i = 0; i < longitud; i++) {
if(cadena1.charAt(i) == ' ') {
posicion[j] = i;
j++;
}
}
Puyover escribió:
EDITO: Muy útil ese método FOX, no lo conocía. Con ese le va a ser mucho menos tedioso que con StringBuffer xD
Un saludo!