preciso comparar um char que é passa como argumento numa função!!!
public static int Comandos(char cmd)
{
//inserir companhia
if (strcmp(cmd , "IC")==0)
return 1;
//remover companhia
else if (strcmp(str, "RA")==0)
return 2;
//inserir voo
else if (strcmp(str, "IV")==0)
return 3;
//inserir novo horario de voo
else if (strcmp(str, "AV")==0)
return 4;
//remover voo
else if (strcmp(str, "RV")==0)
return 5;
//inserir localidade
else if (strcmp(str, "IL")==0)
return 6;
//inserir local turistico em localidade
else if (strcmp(str, "ILL")==0)
return 7;
//remover local turistico em localidade
else if (strcmp(str, "RLL")==0)
return 8;
//consulta companhia
else if (strcmp(str, "CC")==0)
return 9;
//consulta voo companhia
else if (strcmp(str, "CVC")==0)
return 10;
//consulta voo
else if (strcmp(str, "CV")==0)
return 11;
//consulta localidade
else if (strcmp(str, "CL")==0)
return 12;
//consulta local turistico em localidade
else if (strcmp(str, "CLL")==0)
return 13;
//consulta voos q partem de 1 localidade
else if (strcmp(str, "CVL")==0)
return 14;
//consulta voos directos p 1 itenerario num dado dia de partida
else if (strcmp(str, "CVDI")==0)
return 15;
//consulta voos p 1 dado itenerario n1 dado dia de partida
else if (strcmp(str, "CVI")==0)
return 16;
//sair e gravar ficheiro
else if (strcmp(str,"S")==0)
return 17;
else
return -1;
}
o codigo ta em C++ desculpe la …
mas eu consgui fazer em c…
mas em java n consigo como fazer isso.Ja pensei em passar para String…mas…hum n chego la…
se houve uma string compare…ou melhor se os metodos da string fossem tb para os chars era muito bom…
aguardo ajuda companheiros…
ja tou na Main()
o projecto ta mesmo no fim…
char é tipo primitivo então a comparação é feita por == e só com tipos compatíveis (int, byte). Só que char é só 1 char, então não poderias comparar com “IC”. Para comparar Strings, a própria classe String tem um método de comparação de igualdade e um de qualidade.
Nesses casos e em muitos outros, leia a documentação.
estive a ler mesmo agora e tens razao o char é util noutros casos…e neste estava a me ser traiçoeiro…
Eu fui por este caminho porque a prof me atraiçoou…mas a gaja é boa demais e tou sempre a ouvir o k ela me diz… :twisted:
fiz assim
public static int Comandos(String cmd)
{
//inserir companhia
if ((cmd.compareTo("IC")==0))
return 1;
//remover companhia
else if (cmd.compareTo("RA")==0)
return 2;
}
e agora como vou ter uma linha para introduzir os dados com o Scanner in
ex: IC nome morada viatura
e eu kero apenas o “IC” que é o comando para a operação depois ver a comparaçao na minha funçao acima…
Quando vejo um código desses já sei que foi um carinha que pensa em C puro (nem em C++) que fez o código. Em C++ eu faria assim:
#include <string>
using namespace std;
...
string cmd = ...;
if (cmd == "IV") ....
Normalmente só usamos compareTo em comparações do tipo "<" ou ">"; para comparar para igualdade, o Javazeiro típico usa "equals", ou se ele for mais esperto, "equalsIgnoreCase" (que no seu caso de C seria equivalente ao "stricmp" ou "strcmpi").
[quote=thingol]
if ((cmd.compareTo("IV") == 0))
return 1;
Quando vejo um código desses já sei que foi um carinha que pensa em C puro (nem em C++) que fez o código. Em C++ eu faria assim:
#include <string>
using namespace std;
...
string cmd = ...;
if (cmd == "IV") ....
Normalmente só usamos compareTo em comparações do tipo "<" ou ">"; para comparar para igualdade, o Javazeiro típico usa "equals", ou se ele for mais esperto, "equalsIgnoreCase" (que no seu caso de C seria equivalente ao "stricmp" ou "strcmpi").
[/quote]
hehehehe
Eu ainda uso o C como aprendi com a velha guarda de linguagem.Afinal alguém deve manter a tradição em Pé…e nao deixar morrer os velhos hábitos…
ja passei em Cobal
depois C
depois C++
depois ML (Ocaml)
Agora tou em Java…isso nao é evoluçao?
apenas no codigo acima estou a perservar os bons Costumes…do C puro…
Ainda não consigo entender essas diretivas define que vocês veteranos usam tanto… peguei o código de uns caras no topcoder… pelamor… tinha umas 10 linhas de código normal mesmo, o resto era só diretiva. Não entendi NADA. Nem a main dele, porque ele usava todas as diretivas… não entendo direito.
Alkamavo,
CML hein? Fácil fazer produto de matrizes, não é? A x B?
Será que o Matlab é a evolução das CML’s?
Aliás, evolui legal… eu só pensei que o C e o C++ viesse depois da ML (o C nem tanto).
Só não me venha com ponteiros… PELAMORDEDEUS! É muito confuso pra novato, como eu, aprender essas de passar por parâmetro &, *, &(&)… acessar com -> uma struct… Ainda chego lá
O segredo do meu #define é o operador “#”. Ele serve para transformar o argumento da macro em uma constante string. Por exemplo, CMD(IC) é expandido para:
mapNome2Comandos ["IC"] = Comandos::IC
Macros são poderosas mas você tem de saber exatamente o que está fazendo.
(Aliás, você está achando que o comando mapNome2Comandos [“IC”] é parecido com Javascript, não? É que o template map redefiniu o operador [] para poder fazer o equivalente do “put” da interface java.util.Map do Java. Então eu posso usar o map como se fosse um daqueles arrays associativos do Javascript.)