hi all, I am a nooby on this of the programming and i am studing java, the las program that i need to do is sort a deck of cards that I introduce, ok so, the programm works in everything (sort the cards, introduce the cards and "finish" but not how i want) but when i need to stop insert cards dont finish with the "Enter" key (for testing it finish with "f") and here is my problem.
How can I do for finish insert cards??
here is the programm
[code]import java.util.*;
public class Cartas {
public static void main (String arcs[]){
java.util.Scanner carta = new java.util.Scanner(System.in);
ArrayList cartas = new ArrayList();
int punteroA = 0;
int punteroB;
while(true){
String pedida = carta.next();
if(!(pedida.equals("f"))){ //here should be "enter" key instead of "f" (end//\\fin)
cartas.add(pedida);
}else{
break;
}
}
while(punteroA<cartas.size()){
boolean borrarpunteroA = false;
punteroB = punteroA + 1;
while(punteroB<cartas.size()){
String A = (String) cartas.get(punteroA);
String B = (String) cartas.get(punteroB);
A = A.substring(0, A.length()-1);
B = B.substring(0, B.length()-1);
if(A.equals(B)){
cartas.remove(punteroB);
borrarpunteroA = true;
}else{
punteroB++;
}
}
if(borrarpunteroA){
cartas.remove(punteroA);
}else{
}
punteroA++;
}
String cartasnorep [] = new String [10];
int z = 0;
while(z < cartas.size()){
String variable = (String) cartas.get(z);
String concateno;
switch(variable.substring(variable.length()-1, variable.length())){
case "o": if(variable.length()==2){
concateno = "10" + variable;
}else{
concateno = "1" + variable;
}
cartasnorep[z] = concateno;
break;
case "c": if(variable.length()==2){
concateno = "20" + variable;
}else{
concateno = "2" + variable;
}
cartasnorep[z] = concateno;
break;
case "e": if(variable.length()==2){
concateno = "30" + variable;
}else{
concateno = "3" + variable;
}
cartasnorep[z] = concateno;
break;
case "b": if(variable.length()==2){
concateno = "40" + variable;
}else{
concateno = "4" + variable;
}
cartasnorep[z] = concateno;
break;
default:
break;
}
z++;
}
for(int j = cartas.size(); j<cartasnorep.length; j++){
cartasnorep[j]="999";
}
Arrays.sort(cartasnorep);
int i = 0;
for (i=0; i<=cartas.size()-1 ;i++){
String valor = cartasnorep[i];
char valor2 = valor.charAt(1);
String valor3 = Character.toString(valor2);
if(valor3.equals("0")){
valor = valor.substring(valor.length()-2, valor.length());
System.out.print(valor + " ");
}else{
valor = valor.substring(valor.length()-3, valor.length());
System.out.print(valor + " ");
}
}
}
}[/code]
my problem is that, the while in this moment is finished with "f" but i want that it finish with enter key
put your code in code tags ...
plus i don't even understand your problem.
[code]"\n"[/code] instead of [code]"f"[/code] maybe.
[code]"\r"[/code] [I]can[/I] appear too (but doesn't have to) so just ignore that.
(It happens automatically due to [code]default:
break;[/code] already, so you don't need to do anything in particular.)
I don't know the Java library and whatever language the identifiers are in well enough for more than a guess.
ok its done and finished, thanks for all :)
[code]import java.util.*;
public class Cartas {
public static void main (String arcs[]){
java.util.Scanner carta = new java.util.Scanner(System.in);
ArrayList cartas = new ArrayList();
int punteroA = 0;
int punteroB;
String pedida = carta.nextLine();//recogemos la linea entera
int x=0;
boolean leer = true;
String cartanumero = "";
while(x<pedida.length()){//recorremos la longitud de la cadena de cartas
char valor11 = pedida.charAt(x); //recogemos el primer valor convertido a char
String valor12 = Character.toString(valor11); // pasamos el char a string
if(!(valor12.equals(" "))){//si el primer valor de la cadena es distinto de " " entramos y guardamos el primer valor que haya
cartanumero = cartanumero + valor12; //vamos descomponiendo la cadena `para sacacr todas las cartas
if(x==pedida.length()-1){// cuando llegamos al final cambiamos el valor de leer para asi guardar la ultima carta
leer=false;
}
}else{
leer=false;
}
if(!(leer)){//vamos agregando las cartas a la arraylist
cartas.add(cartanumero);
cartanumero = "";
leer=true;
}
x++;
}
while(punteroA<cartas.size()){//el puntro A apunta a la primera posicion del arraylist
boolean borrarpunteroA = false;
punteroB = punteroA + 1; // creamos un puntero B que apunte a la posicion siguiente del anterior
while(punteroB<cartas.size()){
String A = (String) cartas.get(punteroA);
String B = (String) cartas.get(punteroB);
A = A.substring(0, A.length()-1);
B = B.substring(0, B.length()-1);
if(A.equals(B)){ //coparo las cartas de los punteros para ver si son iguales o no
cartas.remove(punteroB);
borrarpunteroA = true;//si son iguales se remueven la carta b
}else{
punteroB++;
}
}
if(borrarpunteroA){
cartas.remove(punteroA);//en caso de k hayan sido iguales se remieve la carta a
}else{
}
punteroA++;
}
String cartasnorep [] = new String [10];//creo un array para orednar las cartas
int z = 0;
while(z < cartas.size()){
String variable = (String) cartas.get(z);
String concateno;
switch(variable.substring(variable.length()-1, variable.length())){//se añaden 1/10-2/20-3/30-4/40 dependiendo del palo y la ongitud k tenga
case "o": if(variable.length()==2){
concateno = "10" + variable;
}else{
concateno = "1" + variable;
}
cartasnorep[z] = concateno;
break;
case "c": if(variable.length()==2){
concateno = "20" + variable;
}else{
concateno = "2" + variable;
}
cartasnorep[z] = concateno;
break;
case "e": if(variable.length()==2){
concateno = "30" + variable;
}else{
concateno = "3" + variable;
}
cartasnorep[z] = concateno;
break;
case "b": if(variable.length()==2){
concateno = "40" + variable;
}else{
concateno = "4" + variable;
}
cartasnorep[z] = concateno;
break;
default:
break;
}
z++;
}
for(int j = cartas.size(); j<cartasnorep.length; j++){//añado valores de +500 hasta llenar el array
cartasnorep[j]="999";
}
Arrays.sort(cartasnorep);//ordena el array
int i;
String valor;
char valor2;
String valor3;
for (i=0; i<cartas.size() ;i++){//imprime las cartas ordenadas y comprueba si tiene un 0 o no
valor = cartasnorep[i];
valor2 = valor.charAt(1);
valor3 = Character.toString(valor2);
if(i<cartas.size()-1){
if(valor3.equals("0")){
valor = valor.substring(valor.length()-2, valor.length());
System.out.print(valor + " ");
}else{
valor = valor.substring(valor.length()-3, valor.length());
System.out.print(valor + " ");
}
}else if(i<cartas.size()){
if(valor3.equals("0")){
valor = valor.substring(valor.length()-2, valor.length());
System.out.println(valor);
}else{
valor = valor.substring(valor.length()-3, valor.length());
System.out.println(valor);
}
}
}
}
}[/code]
Sorry, you need to Log In to post a reply to this thread.