• help with a little problem (java)
    3 replies, posted
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.