Boa tarde galera, tenho uma dúvida: Como relacionar numeros com nomes no java?
Exemplo: Digite seu RA: 17733845
Seu RA é:17733845 --> seu nome é: Miguel Oliveira Dantas
Fiz o codigo abaixo, apareceram 03 erros.
[/**
- @(#)ranome.java
-
- ranome application
-
- @author
-
@version 1.00 2009/4/23
*/
//programa entre com seu RA, vincule com seu respectivo nome
//exemplo: Digite seu RA: 17733845
//seu RA é:17733845 --> seu nome é: Miguel Oliveira Dantas
import java.util.*;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
public class ranome {
public static void main(String[] args) {
String nome;
int i=1;
List ArrayList=new ArrayList();
Map<Integer.String>registros=new HashMap<Integer,String>();
for (int i = 1;i<=5;i++){
ArrayList.add("Miguel Oliveira Dantas, RA: 17733845");
ArrayList.add("Maria Aparecida Silva, RA: 17733004");
ArrayList.add("Isabelle Silva Santos, RA: 24873845");
ArrayList.add("Martins Silva de Aparecida, RA: 111004745");
ArrayList.add("Isidoro Farias de Farias, RA: 010124845");
int ra=Integer.parseInt(JOptionPane.showInputDialog("Digite seu RA"));
registros.put(nome,ra);
}
StringBuilder saida=new StringBuilder("");
for (Integer ra:registros.keySet()){
saida.append("Nome:").append(registros.get(ra));
saida.append("-RA:").append(ra).append("\n");}
JOptionPane.showMessageDialog(null,saida.toString());
}
}
]
Fala registro.put(123456, “nome”); ao invés de usar o add do arraylist. não é preciso usar este arraylist neste código
Ola Bruno, seria mais ou menos isto?
Troquei ArrayList.add por registro.put
E os import estao corretos?
[import java.util.*;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
public class ranome {
public static void main(String[] args) {
String nome;
int i=1;
List ArrayList=new ArrayList();
Map<Integer.String>registros=new HashMap<Integer,String>();
for (int i = 1;i<=5;i++){
registro.put(“Miguel Oliveira Dantas, RA: 17733845”);
registro.put(“Maria Aparecida Silva, RA: 17733004”);
registro.put(“Isabelle Silva Santos, RA: 24873845”);
registro.put(“Martins Silva de Aparecida, RA: 111004745”);
registro.put(“Isidoro Farias de Farias, RA: 010124845”);
int ra=Integer.parseInt(JOptionPane.showInputDialog(“Digite seu RA”));
registros.put(nome,ra);
}
StringBuilder saida=new StringBuilder("");
for (Integer ra:registros.keySet()){
saida.append(“Nome:”).append(registros.get(ra));
saida.append("-RA:").append(ra).append("\n");}
JOptionPane.showMessageDialog(null,saida.toString());
}
}
]]
Obrigado Bruno.
Mapas usam o conceito de chaves e valores. Tendo a chave em mãos você pode obter o valor depois.
No caso a chave é o RA, e o valor é o nome da pessoa.
o método put do mapa funciona com chave e valor nessa order: map.put(key, value);
Bruno obrigado.
Só uma duvida é: map.put(key, value);
ou registro.put(123456, “nome”);
Eu coloquei o map.put.
Veja codigo abaixo:
[/**
- @(#)ranome.java
-
- ranome application
-
- @author
-
@version 1.00 2009/4/23
/
//programa entre com seu RA, vincule com seu respectivo nome
//exemplo: Digite seu RA: 17733845
//seu RA é:17733845 --> seu nome é: Miguel Oliveira Dantas
import java.util.;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
public class ranome {
public static void main(String[] args) {
String nome;
int i = 1;
List ArrayList=new ArrayList();
Map<Integer.String>registros=new HashMap<Integer,String>();
for (int i = 1;i<=5;i++){
map.put(17733845,"Gustavo Leonardo");
map.put(11113845,"Rodrigo Viana");
map.put(17789645,"Guiomar batista");
map.put(002433845,"Vera Cruz");
map.put(00033845,"Maria Aparecida");
int ra=Integer.parseInt(JOptionPane.showInputDialog("Digite seu RA"));
registros.put(nome,ra);
}
StringBuilder saida=new StringBuilder("");
for (Integer ra:registros.keySet()){
saida.append("Nome:").append(registros.get(ra));
saida.append("-RA:").append(ra).append("\n");}
JOptionPane.showMessageDialog(null,saida.toString());
}
}
]
Não saia colocando código sem entender o que acontece primeiro.
O que você realmente precisa, nesta ordem:
-Montar uma lista de RAs e Nomes
-Solicitar um RA do usuário
-Obter o RA na lista.
-Responder com “´”, ou com o nome da Pessoa.
Com isso dito:
[code]
import java.util.*;
import javax.swing.JOptionPane;
public class RaNome{
public static void main(String[] args) {
// -Montar uma lista de RAs e Nomes
Map<Integer,String> registros = new HashMap<Integer,String>();
map.put(17733845,"Gustavo Leonardo");
map.put(11113845,"Rodrigo Viana");
map.put(17789645,"Guiomar batista");
map.put(002433845,"Vera Cruz");
map.put(00033845,"Maria Aparecida");
// -Solicitar um RA do usuário
Integer ra = new Integer (JOptionPane.showInputDialog("Digite seu RA"));
// -Obter o RA na lista.
String nome = registros.get(ra);
String saida = null;
// verifica se encontrou um nome associado ao RA.
if (nome == null)
saida = "RA não encontrado.";
else
saida = "seu RA é: "+ ra + " --> seu nome é: " + nome;
JOptionPane.showMessageDialog(null, saida);
}
}[/code]
Obrigado Bruno foi falta de atenção.
Compilei o programa deu estes dois erros:
--------------------Configuration: RaNome1 - JDK version 1.6.0_13 - --------------------
C:\Documents and Settings\Meus documentos\JCreator Pro\MyProjects\RaNome\RaNome1\src\RaNome1.java:13: integer number too large: 002433845
map.put(002433845,“Vera Cruz”);
^
C:\Documents and Settings\Meus documentos\JCreator Pro\MyProjects\RaNome\RaNome1\src\RaNome1.java:14: integer number too large: 00033845
map.put(00033845,“Maria Aparecida”);
^
2 errors
Process completed.
[import java.util.*;
import javax.swing.JOptionPane;
public class RaNome1{
public static void main(String[] args) {
// -Montar uma lista de RAs e Nomes
Map<Integer,String> registros = new HashMap<Integer,String>();
map.put(17733845,"Gustavo Leonardo");
map.put(11113845,"Rodrigo Viana");
map.put(17789645,"Guiomar batista");
map.put(002433845,"Vera Cruz");
map.put(00033845,"Maria Aparecida");
// -Solicitar um RA do usuário
Integer ra = new Integer (JOptionPane.showInputDialog("Digite seu RA"));
// -Obter o RA na lista.
String nome = registros.get(ra);
String saida = null;
// verifica se encontrou um nome associado ao RA.
if (nome == null)
saida = "RA não encontrado.";
else
saida = "seu RA é: "+ ra + " --> seu nome é: " + nome;
JOptionPane.showMessageDialog(null, saida);
}
}
]
Está ai o seu programa funcionando :
[code]import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
public class RaNome {
public static void main(String[] args) {
// -Montar uma lista de RAs e Nomes
Map<Integer,String> registros = new HashMap<Integer,String>();
registros.put(17733845,"Gustavo Leonardo");
registros.put(11113845,"Rodrigo Viana");
registros.put(17789645,"Guiomar batista");
registros.put(2433845,"Vera Cruz");
registros.put(33845,"Maria Aparecida");
// -Solicitar um RA do usuário
Integer ra = new Integer (JOptionPane.showInputDialog("Digite seu RA"));
// -Obter o RA na lista.
String nome = registros.get(ra);
String saida = null;
// verifica se encontrou um nome associado ao RA.
if (nome == null)
saida = "RA não encontrado.";
else
saida = "seu RA é: "+ ra + " --> seu nome é: " + nome;
JOptionPane.showMessageDialog(null, saida);
}
}
[/code]
Java reclamado que 00033845 é um inteiro muito grande… haha, vai saber…
Desculpe pelo código que não compilou, não testei mesmo.
Outra opção é usar Strings no lugar do RA, ou mesmo um próprio objeto do tipo RA para representá-lo.
E por favor, use as tags código
para formatar o código.
Obrigadao0 jfabbio e bruno, na hora de colocar o código eu coloco nos[code], na hora aparece ele bem arrumado, mas depois que coloco no[code] vejo ele todo dessarumado!!.
Será que estou fazendo certo?
quando for postar coloque em code"[code]"
Entendi todo o código, só não entendi esta parte:
O que significa esta parte?
String saida = null;
Seria o return(null)?
if (nome == null)
se (nome == RA)
seria isto?
Null é o valor para referênciar objetos que ainda não existem, ou não encontrados.
Ola, galera ajuda a finalizar meu projetinnho !!
Fiz tudo certinho mas apareceu dois erros:
--------------------Configuration: roberto - JDK version 1.6.0_13 - --------------------
C:\Documents and Settings\Meus documentos\JCreator Pro\MyProjects\conta\roberto\src\roberto.java:45: cannot find symbol
symbol : method print(java.lang.String,int)
location: class java.io.PrintStream
System.out.print(“Parabens vc passou: %d\n”,c);
^
C:\Documents and Settings\Meus documentos\JCreator Pro\MyProjects\conta\roberto\src\roberto.java:49: cannot find symbol
symbol : method print(java.lang.String,int)
location: class java.io.PrintStream
System.out.print(“vc nao passou: %d\n”,c);
^
2 errors
Process completed.
Segue o código abaixo:
[import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class roberto {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int a,b,c,r;
int i;
// -Montar uma lista de RAs e Nomes
Map<Integer,String> registros = new HashMap<Integer,String>();
registros.put(17733845,"Gustavo Leonardo");
registros.put(11113845,"Rodrigo Viana");
registros.put(17789645,"Guiomar batista");
registros.put(2433845,"Vera Cruz");
registros.put(33845,"Maria Aparecida");
// -Solicitar um RA do usuário
Integer ra = new Integer (JOptionPane.showInputDialog("Digite seu RA"));
// -Obter o RA na lista.
String nome = registros.get(ra);
String saida = null;
// verifica se encontrou um nome associado ao RA.
if (nome == null)
saida = "RA não encontrado.";
else
saida = "seu RA é: "+ ra + " --> seu nome é: " + nome;
JOptionPane.showMessageDialog(null,saida);
System.out.println("digite sua 1º nota:");
a = input.nextInt();
System.out.println("digite sua 2º nota:");
b = input.nextInt();
System.out.println("digite a nota do trabalho:");
c = input.nextInt();
r =(a+b+c)/3;
if (r >=6)
System.out.print("Parabens vc passou: %d\n",c);
else
System.out.print("vc nao passou: %d\n",c);
System.exit(0);
}
} ]
Onde foi que eu errei?
Não existe o método print no System.out que tenha dois parâmetros.
Provavelmente você está procurando pelo printf