SackGirl escribió:Toc toc, se puede?
Soy una total noob en programación, y para empezar desde 0 me han metido JAVA así que, como la mayoría del tiempo no me empano de absolutamente nada y tengo que investigar por mi cuenta, daré el coñazo un poco por aqui.
La cosa esque tengo un código y no sé que quieren decir los operadores subrayados, alguien tan amable de explicarme para qué sirven de una forma que pueda enteder una novata total?num1=teclado.nextInt();
for (f=0;num1>0;num1/=10,[u]f*=[/u]10)
[u]f+=[/u]num1%10;
System.out.println(f/10);
paso.append(JOptionPane.showInputDialog("Introduce el nombre del jugador: "));
paso.setLength(20);
raf.writeChars(paso.toString());
paso.delete(0, 20);
elenano2 escribió:Buenas, me ha surgido un duda rapida que es sencillita pero no veo la forma de hacerla bien. Hay alguna forma de obtener los valores de un string entre corchetes?
Por ejemplo, obtener esto : [prueba]
Solo necesito sacar lo que esta entre corchetes...
Gracias
elenano2 escribió:Gracias por responder litos pero es mas complicado que eso. He planteado mal el problema, la cadena seria así: [prueba]datosdeprueba.
Es decir, detras hay texto siempre por lo que tengo que coger solo lo que hay dentro del corchete.
Gracias
JaViNhORule escribió:Alguno de vosotros tiene el famoso "Problema del mundo de los Bloques" en java? Lo tengo en python pero me estoy haciendo la picha un lío para traducirlo.
System.out.println("Hazlo tu");
elenano2 escribió:Gracias por responder litos pero es mas complicado que eso. He planteado mal el problema, la cadena seria así: [prueba]datosdeprueba.
Es decir, detras hay texto siempre por lo que tengo que coger solo lo que hay dentro del corchete.
Gracias
public class Libro {
private char [ ] titulo;
private int numeroPaginas;
private float dimensionAlto;
private float dimensionAncho;
private char [ ] autor;
private int anoEdicion;
private String contenidoLibro;
private Libro (int tipo){
if(tipo ==1){
this.numeroPaginas =200;
}
else if (tipo==2){
this.numeroPaginas=300;
}
}
public Libro(int tipo, float dimensionAltura,String contenido){
this(tipo); //este constructor solo recibe el tipo
this.dimensionAlto = dimensionAltura;
this.escribir(contenido); //accedemos al metodo mediante this
}
public void escribir (String nuevoContenido){
//metodo publico
this.contenidoLibro =nuevoContenido;
formateaTexto(); //cada vez que se escriba se llamara al metodo privado formatear texto
}
private void formateaTexto(){
//metodo formateara texto, solo accesible desde la propia clase
}
public String getContenidoLibro(){
return contenidoLibro;
}
public void setContenidoLibro (String contenidoLibro){
this.contenidoLibro = contenidoLibro;
}
public float getDimensionAlto(){
return dimensionAlto;
}
public void setDimensionAlto(float dimensionAlto){
this.dimensionAlto =dimensionAlto;
}
public int getNumeroPaginas(){
return numeroPaginas;
}
public void setNumeroPaginas (int numeroPaginas){
this.numeroPaginas = numeroPaginas;
}
}
public class Arrays {
public static void main (String [] args){
Libro[] libros = new Libro[2];
libros[0] =new Libro(1,60.5f,"texto del libro 1");
libros[1] = new Libro(2,60.5f,"Texto del libro 2");
for (int i=0; i < libros.length; i++){
//leemos el contenido del array
System.out.println("contenido del libro " + libros[i].getContenidoLibro());
}//for
}
}
tom_deluxe escribió:elenano2 escribió:Gracias por responder litos pero es mas complicado que eso. He planteado mal el problema, la cadena seria así: [prueba]datosdeprueba.
Es decir, detras hay texto siempre por lo que tengo que coger solo lo que hay dentro del corchete.
Gracias
Pues buscas el carácter '[' y guardas las siguientes letras hasta llegar al carácter ']'
amuchamu escribió:elenano2 escribió:Gracias por responder litos pero es mas complicado que eso. He planteado mal el problema, la cadena seria así: [prueba]datosdeprueba.
Es decir, detras hay texto siempre por lo que tengo que coger solo lo que hay dentro del corchete.
Gracias
Si quieres coger lo que hay entre el primer [ y el primer ] sólo tienes que sacar una substring usando como parámetros un par de funciones indexOf, ambas funciones métodos de String.
josealejandro escribió:Amigos, me podrían decir, porfavor, como se define la ruta de un archivo para linux y para windows?
Lo que pasa es que si es un proyecto pongo, por ejemplo RandomAccessFile("Users.txt", "r")
lo lee sin mayor problema con tal de que el archivo esté en el mismo directorio que mi .java, el problema es que si yo quiero crear, por ejemplo,
una carpeta en el mismo lugar que se llame Database y dentro el archivo Users.txt, si yo trato con RandomAccessFile("\\Database\\Users.txt", "r"), me marca IOException por no poder encontrar el archivo, no se supone que debería poder accesar así?
También supe que hay ciertos tipos de diferencias entre windows y linux con "/" y "\", y tengo que entregar un pequeño proyecto con ambas versiones, creen poder ayudarme?
Saludos de antemano y gracias.
SEVERE: IOException al cargar sesiones persistidas: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: negocio.GestorUsuarios
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: negocio.GestorUsuarios
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595)
at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060)
at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284)
at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5294)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
package negocio;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import modelo.Usuario;
import persistencia.UsuarioDao;
@Named
//@Service
@Scope("session")
public class GestorUsuarios{
@Inject private UsuarioDao usuarioDao;
@Inject private Usuario usuario;
public List<Usuario> listar(){
Usuario u = this.infoUsuario("xxxxxx");
Usuario u2 = new Usuario();
u2.setNombre("Maria");
u2.setApellidos("Garcia");
List<Usuario> detalles = new ArrayList<Usuario>();
detalles.add(u);
detalles.add(u2);
return detalles;
}
@Transactional(propagation=Propagation.REQUIRED)
public void insertar(){
usuarioDao.insertar(usuario);
}
public Usuario infoUsuario(String email){
Usuario u = usuarioDao.buscar(email);
return u;
}
public void setUsuarioDao(UsuarioDao usuarioDao) {
this.usuarioDao = usuarioDao;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public UsuarioDao getUsuarioDao() {
return usuarioDao;
}
}
package persistencia;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
public abstract class AbstractJPATemplateDao<T,k extends Serializable> {
@PersistenceContext(unitName="mysqlPU")
private EntityManager em;
private Class<T> tipo = (Class<T>)
((ParameterizedType)
getClass().getGenericSuperclass()).getActualTypeArguments()[0];
public void insertar(T obj){
//obj = em.merge(obj);
em.persist(obj);
}
public void modificar(T obj){
em.merge(obj);
}
public void borrar(T obj){
obj = em.merge(obj);
em.remove(obj);
}
public T buscar(k id){
return em.find(tipo, id);
}
@SuppressWarnings("unchecked")
public List<T> listarTodos(){
return em.createQuery("select o from "+tipo.getName()+" o").getResultList();
}
}
package persistencia;
import java.io.Serializable;
import java.util.List;
public interface InterfaceDao<T, k extends Serializable> {
void insertar(T obj);
void modificar(T obj);
void borrar(T obj);
T buscar(k id);
List<T> listarTodos();
}
package persistencia;
import modelo.Usuario;
public interface UsuarioDao extends InterfaceDao<Usuario, String>{
}
package persistencia;
import org.springframework.stereotype.Repository;
import modelo.Usuario;
@Repository
public class UsuarioDaoHibernate extends AbstractJPATemplateDao<Usuario, String> implements UsuarioDao {
}
package prodconmultiple;
import java.util.Scanner;
import java.util.concurrent.Semaphore;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author alvaro
*/
public class ProdConMultiple extends Thread{
static Semaphore semProd;//demaforo de los productores
static Semaphore semCon;//demafotro de lso consumidores
static Semaphore em;//este semafoto es pala accede en exclusion mutua
static int pos=0;
static int []buffer;
int tipo;
public ProdConMultiple(int tipo){
this.tipo=tipo;
}
public void run(){
if(tipo==0){
while(true){
try {
semProd.acquire();
em.acquire();
} catch (InterruptedException ex) {
Logger.getLogger(ProdConMultiple.class.getName()).log(Level.SEVERE, null, ex);
}
buffer[pos]=(int)Math.random();
pos++;
System.out.println("pos++"+pos);
System.out.println(currentThread().getName()+" Produjo");
em.release();
semCon.release();
}
}
else if(tipo==1){
try {
semCon.acquire();
em.acquire();
} catch (InterruptedException ex) {
Logger.getLogger(ProdConMultiple.class.getName()).log(Level.SEVERE, null, ex);
}
int consum=buffer[pos];
pos--;
System.out.println("pos--"+pos);
System.out.println(currentThread().getName()+" consumio");
em.release();
semProd.release();
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
em=new Semaphore(1);
int n,m;
Scanner sc=new Scanner(System.in);
ProdConMultiple [] productores;
ProdConMultiple [] consumidores;
System.out.println("Introduzca el numero de productores");
n=sc.nextInt();
buffer=new int[n];
productores=new ProdConMultiple[n];
System.out.println("Introduzca el numero de consumidores");
m=sc.nextInt();
consumidores=new ProdConMultiple[n];
semProd=new Semaphore(n);
semCon=new Semaphore(1);
for(int i=0;i<n;i++){
productores[i]=new ProdConMultiple(0);
}
for(int i=0;i<m;i++){
consumidores[i]=new ProdConMultiple(1);
}
for(int i=0;i<n;i++){
productores[i].start();
}
for(int i=0;i<m;i++){
consumidores[i].start();
}
}
}
//Creo una lista para meter los objetos
List<AUTO> lista = new ArrayList<AUTO>();
// Creo un objeto llamado nombre, de la clase AUTO. (Crearía unos cuantos)
AUTO nombre = new AUTO();
//Y ahora los meto en la lista
lista.add(nombre); <--- Esto me da error!!!
dandorf escribió:¡Buenas!
Una duda que tengo en JAVA.
He hecho una clase, pongamos de nombre AUTO. Y ahora quiero hacer en el main (otro archivo .java distinto a donde tengo la clase), una lista que contenga varios objetos de la clase AUTO.
Bien, tengo lo siguiente://Creo una lista para meter los objetos
List<AUTO> lista = new ArrayList<AUTO>();
// Creo un objeto llamado nombre, de la clase AUTO. (Crearía unos cuantos)
AUTO nombre = new AUTO();
//Y ahora los meto en la lista
lista.add(nombre); <--- Esto me da error!!!
El error es el siguiente: "non-static variable lista cannot be referenced from a static context"
¿Cual es el problema?
EDITO: Vale, si declaro la lista como "static" si me funciona...Pero no entiendo por qué pasa esto..???
dandorf escribió:¡Buenas!
EDITO: Vale, si declaro la lista como "static" si me funciona...Pero no entiendo por qué pasa esto..???
public class Pepito{
public List<String> nombreAmigosList = new ArrayList<String>();
public static void main(String[] args){
String amigoPepito = "Juanito";
//Error
nombreAmigosList.add(amigoPepito);
//Bueno
Pepito pepito = new Pepito()
pepito.nombreAmigosList.add(amigoPepito)
}
}
public class Sincronizacion {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws InterruptedException {
int turno =1;
Object cerrojo=new Object();
S1 s1=new S1(turno,cerrojo);
S2 s2=new S2(turno,cerrojo);
S3 s3=new S3(turno,cerrojo);
s1.start();
s2.start();
s3.start();
s1.join();
s2.join();
s3.join();
}
}
public class S1 extends Thread{
int turno;
Object cerrojo;
@Override
public void run(){
synchronized(cerrojo){//aqui sale un warning diciendo "Sincronizacion en campo que no es final"
while(turno!=1){
try {
cerrojo.wait();
} catch (Exception e) {
}
}
System.out.println("S1 ha despertado");
turno=2;
cerrojo.notifyAll();
}
}
public S1(int turno,Object cerrojo){
this.turno=turno;
this.cerrojo=cerrojo;
}
}
public class S2 extends Thread{
int turno;
Object cerrojo;
@Override
public void run(){
synchronized(cerrojo){
while(turno!=2){
try {
cerrojo.wait();
} catch (Exception e) {
}
}
System.out.println("S2 ha despertado");
turno=3;
cerrojo.notifyAll();
}
}
public S2(int turno,Object cerrojo){
this.turno=turno;
this.cerrojo=cerrojo;
}
}
public class S3 extends Thread{
int turno;
Object cerrojo;
@Override
public void run(){
synchronized(cerrojo){
while(turno!=3){
try {
cerrojo.wait();
} catch (Exception e) {
}
}
System.out.println("S3 ha despertado");
cerrojo.notifyAll();
}
}
public S3(int turno,Object cerrojo){
this.turno=turno;
this.cerrojo=cerrojo;
}
}
do{
System.out.println("Elija una opcion:");
System.out.println("Pulse 2 para salir");
System.out.println("Pulse 1 para Introducir el nombre del cliente");
opcion=teclado.nextInt();
switch(opcion) {
case 1:
System.out.println ("Introduzca el Nombre del cliente:");
cliente.setNombre (teclado.nextLine());
cliente.setNombre(teclado.nextLine());
Opcion=true;
System.out.println("Introduzca uno de los formatos siguentes:");
System.out.println("Pulse 1 para vinilo");
System.out.println("Pulse 2 para CD");
System.out.println("pulse 3 para cassete");
articulo=teclado.nextInt();
case 2:
System.out.println ("Gracias por utilizar la aplicación");
break;
}
}while (opcion != 0);
try{ String lineaArchivo;
String fuenteArchivo=cliente.getNombre();
BufferedReader fuenteSalida;
fuenteSalida = new BufferedReader(
new StringReader(fuenteArchivo));
// Se define un stream de salida (PrintWriter)
// que tomara los datos de memoria (BufferedWriter)
// y los escribira en un archivo (FileWriter)
PrintWriter archivoSalida;
archivoSalida = new PrintWriter(
new BufferedWriter(
new FileWriter("C:Tienda.txt")));
while ((lineaArchivo = fuenteSalida.readLine()) != null)
archivoSalida.println(1 + ": " + lineaArchivo );
// Se cierra el stream de salida
archivoSalida.close(); }
catch (IOException e) {
System.out.println("Excepcion Entrada/Salida");
}
}
}
switch(variable) {
case 1:
break;
case 2:
break;
//Los cases que hagan falta
}
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.StringReader;
import java.util.InputMismatchException;
//Importo las utilidades de java a utilizar
public class Principal {
//Pongo las Variables que voy a utilizar para leer y escribir los archivos
private static Scanner teclado;
public Principal (String Inventario){
}
public static void main(String[] args ) {
teclado = new Scanner(System.in);
int opcion;
Cliente cliente=new Cliente();
Vinilo disco=new Vinilo();
int vinilocopy = 0;
//Pido a el dependiente que introduczca una opción
System.out.println("Escriba cliente para continuar");
System.out.println("Escriba Salir para terminar la aplicación");
String confirmar =teclado.nextLine();
if(confirmar.equalsIgnoreCase("cliente")){
//Capturo el nombre del cliente para luego guardarlo
System.out.println ("Introduzca el Nombre del cliente:");
cliente.setNombre (teclado.nextLine());
//Creo un Case para que seleccione el tipo de formato de venta que va a vender
do{
System.out.println("Introduzca uno de los formatos siguentes:");
System.out.println("Pulse 1 para vinilo");
System.out.println("Pulse 2 para CD");
System.out.println("pulse 3 para cassete");
opcion=teclado.nextInt();
switch(opcion){
case 1:
System.out.println("Vinilo");
System.out.println("Introduzca el nombre del autor");
Vinilo.setautor(teclado.nextLine());
System.out.println("Introduzca el titulo");
disco.setTitulo(teclado.nextLine());
break;
case 2:
System.out.println("CD");
break;
case 3:
System.out.println("cassete");
break;
default:
System.out.println("Opcion no reconocida");
System.out.println("Introducza una de las opciones disponibles:");
//Si no pone una de las 3 opciones creo un bucle para que se repita la pregunta
}
}while(opcion >= 4);
}else {
System.out.println("Gracias por utilizar la aplicacion");
}
try{ String lineaArchivo;
String fuenteArchivo=cliente.getNombre();
BufferedReader fuenteSalida;
String fuentevinilo=Vinilo.getAutor();
fuenteSalida = new BufferedReader(
new StringReader(fuenteArchivo));
// Se define un stream de salida (PrintWriter)
// que tomara los datos de memoria (BufferedWriter)
// y los escribira en un archivo (FileWriter)
PrintWriter archivoSalida;
archivoSalida = new PrintWriter(
new BufferedWriter(
new FileWriter("C:Tienda.txt")));
while ((lineaArchivo = fuenteSalida.readLine()) != null)
archivoSalida.println(1 + ": " + lineaArchivo );
archivoSalida.println(2+ ":"+fuentevinilo);
// Se cierra el stream de salida
archivoSalida.close(); }
catch (IOException e) {
System.out.println("Excepcion Entrada/Salida");
}
}
}
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.StringReader;
import java.util.InputMismatchException;
//Importo las utilidades de java a utilizar
public class Principal {
//Pongo las Variables que voy a utilizar para leer y escribir los archivos
private static Scanner teclado;
public Principal (String Inventario){
}
public static void main(String[] args ) {
teclado = new Scanner(System.in);
String formato=(equalsIgnoreCase("vinilo"));
//Pido a el dependiente que introduczca una opción
String Respuesta=(equalsIgnoreCase("cliente"));
System.out.println("Esperando orden:");
System.out.println("Crear cliente");
System.out.println("Listar cliente");
System.out.println("Eliminar cliente");
System.out.println("Cerrar");
Respuesta=teclado.nextLine();
//creo las posibles respuestas del dependiente
if (Respuesta.equalsIgnoreCase("CREAR cliente")){
//Capturo el nombre del cliente para luego guardarlo
System.out.println("Introduzca el nombre del cliente:");
Cliente.setNombre(teclado.nextLine());
System.out.println("Introduzca el formato de musica");
formato=teclado.nextLine();
}else if(Respuesta.equalsIgnoreCase("Listar cliente")){
//Capturo el nombre del cliente para luego guardarlo
System.out.println("Introduzca el nombre del cliente:");
Cliente.setNombre(teclado.nextLine());
System.out.println("introduzca el formato de musica");
formato=teclado.nextLine();
}else if(Respuesta.equalsIgnoreCase("eliminar cliente")){
System.out.println("introduzca el nombre del cliente a eliminar:");
Cliente.setNombre(teclado.nextLine());
System.out.println("El cliente: "+Cliente.getNombre()+" ha sido eliminado con exito");
}else if(formato.equalsIgnoreCase("vinilo")){
System.out.println("Introduzca el titulo de la obra:");
Vinilo.setTitulo(teclado.nextLine());
System.out.println("Introduzca el autor de la obra:");
Vinilo.setautor(teclado.nextLine());
}else if(formato.equalsIgnoreCase("CD")){
System.out.println("Introduzca el nombre del autor");
CD.setautor(teclado.nextLine());
System.out.println("Introduzca el titulo del CD");
CD.settitulo(teclado.nextLine());
}else if(formato.equalsIgnoreCase("cassete")){
System.out.println("Introduzca el nombre del autor");
cassete.setautor(teclado.nextLine());
System.out.println("Introduzca el titulo del cassete");
cassete.setTitulo(teclado.nextLine());
}else if(Respuesta.equalsIgnoreCase("cerrar")){
System.out.println("Gracias por utilizar la aplicación");
}else{
System.out.println("Opcion no valida");
Respuesta=teclado.nextLine();
}
deivor escribió:Hola, lo primero gracias por la ayuda del otro dia.
Me ha servido mucho, pero ya tengo casi teminado mi programa y bueno utilice al principio un if para que tirara ha cliente y o elfe para salir.
Pero cuando salgo me salta esta excepción java.lang.NullPointerException, y no se por que me sale.
Mira este es el codigoimport java.io.FileNotFoundException;
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.StringReader;
import java.util.InputMismatchException;
//Importo las utilidades de java a utilizar
public class Principal {
//Pongo las Variables que voy a utilizar para leer y escribir los archivos
private static Scanner teclado;
public Principal (String Inventario){
}
public static void main(String[] args ) {
teclado = new Scanner(System.in);
int opcion;
Cliente cliente=new Cliente();
Vinilo disco=new Vinilo();
int vinilocopy = 0;
//Pido a el dependiente que introduczca una opción
System.out.println("Escriba cliente para continuar");
System.out.println("Escriba Salir para terminar la aplicación");
String confirmar =teclado.nextLine();
if(confirmar.equalsIgnoreCase("cliente")){
//Capturo el nombre del cliente para luego guardarlo
System.out.println ("Introduzca el Nombre del cliente:");
cliente.setNombre (teclado.nextLine());
//Creo un Case para que seleccione el tipo de formato de venta que va a vender
do{
System.out.println("Introduzca uno de los formatos siguentes:");
System.out.println("Pulse 1 para vinilo");
System.out.println("Pulse 2 para CD");
System.out.println("pulse 3 para cassete");
opcion=teclado.nextInt();
switch(opcion){
case 1:
System.out.println("Vinilo");
System.out.println("Introduzca el nombre del autor");
Vinilo.setautor(teclado.nextLine());
System.out.println("Introduzca el titulo");
disco.setTitulo(teclado.nextLine());
break;
case 2:
System.out.println("CD");
break;
case 3:
System.out.println("cassete");
break;
default:
System.out.println("Opcion no reconocida");
System.out.println("Introducza una de las opciones disponibles:");
//Si no pone una de las 3 opciones creo un bucle para que se repita la pregunta
}
}while(opcion >= 4);
}else {
System.out.println("Gracias por utilizar la aplicacion");
}
try{ String lineaArchivo;
String fuenteArchivo=cliente.getNombre();
BufferedReader fuenteSalida;
String fuentevinilo=Vinilo.getAutor();
fuenteSalida = new BufferedReader(
new StringReader(fuenteArchivo));
// Se define un stream de salida (PrintWriter)
// que tomara los datos de memoria (BufferedWriter)
// y los escribira en un archivo (FileWriter)
PrintWriter archivoSalida;
archivoSalida = new PrintWriter(
new BufferedWriter(
new FileWriter("C:Tienda.txt")));
while ((lineaArchivo = fuenteSalida.readLine()) != null)
archivoSalida.println(1 + ": " + lineaArchivo );
archivoSalida.println(2+ ":"+fuentevinilo);
// Se cierra el stream de salida
archivoSalida.close(); }
catch (IOException e) {
System.out.println("Excepcion Entrada/Salida");
}
}
}
Haber si me decis el por que, es que no veo el error por ningun lado, y solo quiero que si le doy a salir pues salga y ya sin problemas.
Vinilo.setautor(teclado.nextLine());
disco.setautor(teclado.nextLine());
zaius5 escribió:He echo un pequeño ejemplo con wait y notifyall pero se me queda bloqueado en el primer hilo ,si la variable turno es comun a todos porque cuando cambio el valor de turno a 2 no se despierta el hilo dos??
este es el main
/**
*
* @author Demon
*/
public class Main {
public static void main(String[] args) {
new Main();
}
public Main(){
Lista lista = new Lista();
Consumidor con1 = new Consumidor(lista , "Con1");
Consumidor con2 = new Consumidor(lista , "Con2");
Productor prod1 = new Productor(lista, "Prod1");
Productor prod2 = new Productor(lista, "Prod2");
Productor prod3 = new Productor(lista, "Prod3");
Thread t1 = new Thread(con1);
Thread t2 = new Thread(con2);
Thread t3 = new Thread(prod1);
Thread t4 = new Thread(prod2);
Thread t5 = new Thread(prod3);
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Lista {
private ArrayList<Integer> lista;
public Lista() {
lista = new ArrayList();
}
public synchronized Integer addDato(Integer data) {
lista.add(data);
notify();
return data;
}
public synchronized Integer getDato() {
try {
while (lista.isEmpty()) {
wait();
}
Integer data = lista.remove(0);
return data;
} catch (InterruptedException ex) {
Logger.getLogger(Lista.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
}
import java.util.Random;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Demon
*/
public class Productor implements Runnable {
private String name;
private Lista lista;
private Random r;
public Productor(Lista comun, String name) {
this.name = name;
this.lista = comun;
r = new Random();
}
@Override
public void run() {
while (true) {
System.out.println("Productor " + name + " inserta: " + lista.addDato(new Integer(r.nextInt())));
}
}
}
/**
*
* @author Demon
*/
public class Consumidor implements Runnable{
private String name;
private Lista lista;
public Consumidor(Lista comun,String name){
this.name = name;
this.lista = comun;
}
@Override
public void run() {
while(true){
System.out.println("Consumidor "+name+" lee: "+lista.getDato());
}
}
}
Acermax escribió:Respuesta.equalsIgnoreCase(Juan)&&(pepe)
Es que esta función no tiene sentido como la has puesto. Su forma correcta es: equalsIgnoreCase(String anotherString)
Y veo que no tiene nada más sobrecargado.
Puedes poner !Respuesta.equalsIgnoreCase(Juan)&&!Respuesta.equalsIgnoreCase(Pepe)
http://docs.oracle.com/javase/1.4.2/doc ... tring.html
String Repuesta=equalsIgnoreCase("pepe");
String Repuesta= "Pepe";
import java.rmi.RemoteException;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.net.*;
import java.rmi.Naming;
public class SMatriz extends UnicastRemoteObject implements iMatriz{
public SMatriz()throws Exception{
super();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception{
SMatriz obj1=new SMatriz();
Naming.bind("Servidor1", obj1);
SMatriz obj2=new SMatriz();
Naming.bind("Servidor2", obj2);
SMatriz obj3=new SMatriz();
Naming.bind("Servidor3", obj3);
SMatriz obj4=new SMatriz();
Naming.bind("Servidor4", obj4);
System.out.println("Servidores Remotos Preparados");
}
@Override
public void escalar(int liminf, int limsup,int mat[][]) throws RemoteException {
for(int i=liminf;i<limsup;i++){
for(int j=0;j<mat[0].length;j++){
mat[i][j]=mat[i][j]*2;
System.out.print(mat[i][j]); //aqui sale la matriz ya multiplicada
}
System.out.println();
}
System.out.println();
}
}
import java.rmi.*;
import java.rmi.registry.*;
import java.util.Random;
import java.util.Scanner;
public class CMatriz {
public static void main(String []args) throws Exception{
Scanner sc=new Scanner(System.in);
System.out.println("Introduzca el numero de filas y columnas de la matriz");
int f=sc.nextInt();
int intervalo=f/4;
int inf=0;
int sup=intervalo;
int mat[][]=new int[f][f];
for(int i=0;i<mat.length;i++){
for(int j=0;j<mat.length;j++){
mat[i][j]=new Random().nextInt(10)+1;
}
}
for(int i=0;i<mat.length;i++){
for(int j=0;j<mat.length;j++){
System.out.print(mat[i][j]+" "); //aqui sale la matriz original
}
System.out.println();
}
System.out.println();
iMatriz ref1=(iMatriz)Naming.lookup("Servidor1");
iMatriz ref2=(iMatriz)Naming.lookup("Servidor2");
iMatriz ref3=(iMatriz)Naming.lookup("Servidor3");
iMatriz ref4=(iMatriz)Naming.lookup("Servidor4");
ref1.escalar(inf, sup, mat);
inf=sup;
sup=sup+intervalo;
ref2.escalar(inf, sup, mat);
inf=sup;
sup=sup+intervalo;
ref3.escalar(inf, sup, mat);
inf=sup;
sup=sup+intervalo;
ref4.escalar(inf,f,mat);
for(int i=0;i<mat.length;i++){
for(int j=0;j<mat.length;j++){
System.out.print(mat[i][j]+" "); //y aqui sigue saliendo la matriz original cuando deberia salir la multiplicada
}
System.out.println();
}
System.out.println();
}
}
elenano2 escribió:Hola compañeros, tengo una duda bastante curiosa y a ver si vosotros habéis tenido que hacer algo parecido.
Tengo que pintar rectangulos sobre un jpanel hasta ahi todo bien. El problema surge que una vez estan pintados, si mueves componentes por encima suyo, los borra.
Se que es por el tema de pintura, pero no se como hacer que al arrastrar no borre lo que hay dibujado sobre el, alguien sabría como hacerlo?
Gracias
soen escribió:Tengo que hacer un programa en java que usando recursividad me descomponga un numero en potencias de 2. Por ejemplo, si introduzco 33 que de como resultado 2^5 + 2^0. Alguien me podría decir como hacerlo? Llevo dias dandole vueltas pero no hay manera.
soen escribió:Alecs7k escribió:soen escribió:Tengo que hacer un programa en java que usando recursividad me descomponga un numero en potencias de 2. Por ejemplo, si introduzco 33 que de como resultado 2^5 + 2^0. Alguien me podría decir como hacerlo? Llevo dias dandole vueltas pero no hay manera.
Enseña lo que tienes hecho y a partir de ahí podemos darte algunas pistas, pero no creas que nadie te hará los deberes.
El problema es que no se como plantearlo, sin recursividad divido el numero entre 2 y con un contador cuento cuantas veces lo puede dividir mientras se cumpla x%2==0, y si no que reste 1 al resultado, pero no se como hacer para que sea recursivo.
gcvictorgc escribió:Hola, estamos programando una práctica en java en la universidad
No es nada complicado, es leer de un fichero una serie de datos y hacer un par de opraciones con ellos
El caso es que teniamos una duda y el profesor me ha dicho que cree un objeto de la clase que contiene el metodo main, dentro del propio metodo main. Para poder tener acceso a una serie de variables. Funciona. Ese no es el problema.
A mi me parece una mala práctica la recomendación del profesor y le explicado por qué pero no le he convencido, así que os lo pregunto a vosotros:
Lo que yo digo es, ¿de que te sirve que el método main sea static si vas a estar creando objetos de la clase que lo contiene, y además dentro del propio metodo main?
Un saludo