Foro sobre Java SE > Arreglo dinamico en java
La igualdad de los String se debe comprobar con su método equals, no con ==
Hasta ahora tenglo el ejercicio asi, pero no me funciona:
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner teclado = new Scanner (System.in);
ArrayList<Integer> numeros = new ArrayList<Integer>();
int valor,x;
String a;
a=teclado.nextLine();
valor=teclado.nextInt();
while (a.equals("fin")) {
if (a.equals("incluir")) {
numeros.add(valor);
}
else if (a.equals("buscar")) {
numeros.indexOf(valor);
for(x=0;x<numeros.size();x++){
if (numeros.indexOf(valor)==-1) {
System.out.println("no encontrado");}
else
System.out.println("encontrado");
}
}
System.out.println(numeros);
break;
}
} }
Creo que lo que quieres es
while (!"fin".equals(a)) // que siga mientras no se introduzca "fin"
Las constantes están mejor a la izquierda del equals, porque si el valor a comparar es null, no lanzará una excepción NPE, sino que el resultado será false.
Por otra parte,
a=teclado.nextLine();
valor=teclado.nextInt();
deberían estar dentro el bucle while, o los valores solo se leerán una vez desde el teclado
No entiendo bien cual es el problema, no me ejecuta:
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String []args) {
Scanner teclado = new Scanner (System.in);
ArrayList<Integer> numeros = new ArrayList<Integer>();
int valor,x;
String a;
do {
a=teclado.nextLine();
valor=teclado.nextInt();
if ("incluir".equals(a)) {
numeros.add(valor);
}
else if ("buscar".equals(a)) {
numeros.indexOf(valor);
for(x=0;x<numeros.size();x++){
if (numeros.indexOf(valor)==-1) {
System.out.println("no encontrado");}
else
System.out.println("encontrado");
}
}
}
while (!"fin".equals(a));
} }
Hay un antiguo problema, que parece que sigue sin resolverse, al usar un nextInt tras un nextLine.
Prueba a usar
valor=Integer.parseInt(teclado.nextLine());
espero que te ayude
he cambiado el "indexOf()" por "contains()" este ultimo retorna un valor boolean.
Quedaria asi.
public class ArregloDinamico {
static ArrayList<Integer> listaEnteros = new ArrayList<>();
static int valor;
static boolean resultado;
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
String palabra = entrada.nextLine();
while(!(palabra.equals("fin")) ){
if (palabra.equals("incluir")){
valor = entrada.nextInt();
añadir(valor);
}
if (palabra.equals("buscar")){
valor = entrada.nextInt();
buscar(valor);
}
palabra = entrada.nextLine();
}
fin(resultado);
}
public static boolean buscar(int v)
{ resultado = false ;
resultado = listaEnteros.contains(v);
return resultado ;
}
public static void añadir( int v)
{
listaEnteros.add(v);
}
public static void fin(boolean resultado)
{
if(resultado== true)
System.out.println("Encontrado " );
else
System.out.println("No encontrado");
}
}
Buenas tardes:
Necesito generar un arreglo dinámico tal que al yo ingresar la palabra "include 5" el me incluya el 5 en mi arreglo; si le ingreso "buscar 5" el me busque si el 5 esta dentro de mi arreglo" y al introducir la palabra "fin", me diga si encontro el elemento en el arreglo:
Ejemplo de entrada
incluir -132
incluir -761
incluir -45
buscar -30
incluir -680
incluir -1024
buscar -45
fin
Ejemplo de salida
no encontrado
encontrado
Hasta ahora llevo esto, ayuda por favor:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
ArrayList<Integer> arreglo = new ArrayList<Integer>();
String a = "incluir";
String b = "buscar";
String c = "fin";
String k;
int n, s;
k = entrada.nextLine();
n = entrada.nextInt();
if (k == a) {
arreglo.add(n);
}
else if (k == b) {
arreglo.indexOf(n);
}
else
System.out.println(arreglo);
}
}