PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/11/04 20:48:50
Name 롤즈.
Subject 자바 질문있습니다. 해시맵관련
import java.util.*;

class Person{
String phone;
String email;
String address;


Person(String phone, String email, String address){
  this.phone = phone;
  this.email = email;
  this.address = address;
  
}
}
public class HashMapaddress{
public static void main(String[] args) {
  
  HashMap<String, Person> hashmap = new HashMap<String, Person>();
  
  hashmap.put("이름1", new Person("전화번호", "e-mail", "주소"));
  hashmap.put("이름2", new Person("전화번호", "e-mail", "주소"));
  hashmap.put("이름3", new Person("전화번호", "e-mail", "주소"));
  
  Person ps = hashmap.get("이름1");
  System.out.println("이름1의 정보 : " + ps.phone + ps.email + ps.address);
}

}

기본적으로 이런식으로 처음부터 해시맵에 정보를 넣어놓고 출력도 정해서 하는건 할 수 있겠는데요
사용자로부터 정보를 입력받고 정보의 출력도 입력을 받아서(예를 들어 이름) 할 수 있게 하려면
어떻게 해야하나요??? 검색을 통해서 해시에 저장 뭐 이런식으로 해보고 있는데 원하는 답이 안나와 질문드립니다.
책을 학교에 놓고와서 찾아볼수가 없네요...

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/11/04 20:50
수정 아이콘
4개의 변수를 선언하고 각각 변수의 내용을 scanner로 입력 받으시면 됩니다.

그리고 각각 입력 받은 내용을 hashmap에 저장하시면 됩니다.

근데 검색을 통해서 해시에 저장한다는 말은 무슨 뜻인지를 모르겠네요.
10/11/04 21:01
수정 아이콘
아..책이 없어서 인터넷 검색을 해서 방법을 찾아보려고 했다는 거였습니다;;
답변감사드립니다. 근데 감이 안오네요 ㅠㅠ
10/11/04 21:00
수정 아이콘
Scanner s = new Scanner(System.in);

string name = s.next();
string phone = s.next();
string mail = s.next();
string addr = s.next();

hashmap.put(name, new Person(phone, mail, addr));

이런 식으로 키보드로 입력받아서 해시맵에 저장하고요

string name = s.next();

Person ps = hashmap.get(name);

이런 식으로 입력받아서 해시맵에서 검색하세요.
10/11/04 21:09
수정 아이콘
답변 정말 감사드립니다!
10/11/04 21:54
수정 아이콘
import java.util.HashMap;
import java.util.Scanner;
import java.util.jar.Attributes.Name;

class Person


Scanner s = new Scanner(System.in);


//String name;
String phone = s.next();
String email;
String address;
String group;

Person( String phone, String email, String address, String group){
//this.name = name;
this.phone = phone;
this.email = email;
this.address = address;
this.group = group;

}
public class Assign6

public static void main(String[] args) {

Scanner s = new Scanner(System.in);
String name;

HashMap<name, Person> hashmap = new HashMap<name, Person>();

for(int i = 1; i<21; i++)
{
System.out.println(">>Please enter a name #i");
String name = s.next();
System.out.println(">>Please enter a phone number of name #i");
String phone = s.next();
System.out.println(">>Please enter an e-mail of name #i");
String email = s.next();
System.out.println(">>Please enter an address of name #i");
String address = s.next();
System.out.println(">>Please enter a group of name #i");
String group = s.next();

hashmap.put(name, new Person(phone, email, address, group));


System.out.println(">>Please enter name");

Person ps = hashmap.get(name);

System.out.println(name + ps.phone + ps.email + ps.address + ps.group);
}
}
이렇게 만들어봤는데 오류가 나는데 어디가 잘못된걸까요??

오류가 나는 부분은
HashMap<name, Person> hashmap = new HashMap<name, Person>();
여기서 name 부분인데요..
자료를 20명치 입력받으려고 하는데 저렇게 for문을 쓰는건 맞는지요?
10/11/04 22:11
수정 아이콘
-_-;;;;;소스가 총체적 난국이네요;;;

일단 클래스 내에는 멤버변수와 변수들을 컨트롤하는 함수들만 있어야 됩니다.

그 안에 Scanner라고 쓰신거 지우시고요;;;

HashMap<name, Person> hashmap = new HashMap<name, Person>();

이것 역시 저장이 될 자료형을 기록해야 합니다. 즉 HashMap<String, Person>으로 쓰셔야 됩니다.

어쩌다가 jar.Attributes.Name이란 녀석이 추가되게 됐는지-_-;;;;
10/11/04 22:15
수정 아이콘
그리고 for는 저렇게 쓰셔도 됩니다. 뭐 어떻게 쓰건 20개만 카운트 하게 하면 되니까요...

그래도 보통은 for(int i = 0; i < 20; i++) 이런식으로 많이 쓰죠

왜 0부터 쓰냐면 과거부터 동일한 자료 여러개 저장할 때는 배열을 쓰는데 이 배열의 시작 인덱스가 0이기 때문에 0부터 시작합니다. 뭐 자바나 c# 오면서 저장하는 인덱스 관리가 쉬워져서 아무렇게나 원하는 숫자 카운팅 해도 되지만 저런 이유로 0부터 시작합니다.
10/11/04 22:24
수정 아이콘
import java.util.HashMap;
import java.util.Scanner;

class Person


String phone;
String email;
String address;
String group;

Person(String phone, String email, String address, String group){
this.phone = phone;
this.email = email;
this.address = address;
this.group = group;

}
public class Assign6

public static void main(String[] args) {

Scanner s = new Scanner(System.in);
String name = new String();

HashMap<String, Person> hashmap = new HashMap<String, Person>();

for(int i = 0; i<20; i++)
{
System.out.println(">>Please enter a name #i");
name = s.next();
System.out.println(">>Please enter a phone number of name #i");
String phone = s.next();
System.out.println(">>Please enter an e-mail of name #i");
String email = s.next();
System.out.println(">>Please enter an address of name #i");
String address = s.next();
System.out.println(">>Please enter a group of name #i");
String group = s.next();

hashmap.put(name, new Person(phone, email, address, group));


System.out.println(">>Please enter name");

Person ps = hashmap.get(name);

System.out.println(name + ps.phone + ps.email + ps.address + ps.group);
}
}

손 봤습니다.

Name 저건 뭔지도 모르겠고 있어야 할 의미도 없어서 import서 제거합니다.
10/11/04 22:35
수정 아이콘
HashMap<String, Person> hashmap = new HashMap<Strng, Person>();

이 부분에 오타 있었습니다;;;

HashMap<String, Person> hashmap = new HashMap<String, Person>();

그리고 메인 윗부분에서 name이 선언 되어 있었는데

for 안에서 또 String name이 선언되어 있습니다. 이중 선언입니다. 이부분에서는 String 지워주시면 됩니다.
마지막으로 메인부분에 선언되어 있는 String name은 초기화가 안되어 있습니다.

String name = new String(); 정도로 초기화 하시면 됩니다.

이 부분 초기화가 왜 필요하냐면 hashmap.get으로 찾을때 name을 사용하기 때문입니다. for안에서 사용될 지 않될지 모르기 때문에 초기화를 해주시면 됩니다.
10/11/04 22:40
수정 아이콘
여기까지 수정을 마친것으로 테스트 해봤습니다. 정상적으로 작동됩니다 흐흐흐
10/11/04 22:47
수정 아이콘
앗! 답글 확인하기 전에 쪽지 보냈는데, 저렇게도 해결이 되는군요!
정말 감사드립니다!!!
10/11/04 22:57
수정 아이콘
제가 올린 리플을 근본적인 것 부터 수정해서 해결했습니다. 저게 최종본입니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
94531 거시경제학 공부 예전 강의로 해도 관계 없나요?; [1] Paloalto1324 10/11/04 1324
94530 365일 계속 틀어놓는 전기제품이 뭐가 있을까요? [15] 희주2109 10/11/04 2109
94529 익스플로러8 새창 관련 오류 쪼씨1566 10/11/04 1566
94528 진지하게 동네미용실좀 벗어나고 싶습니다. [4] 韓信1913 10/11/04 1913
94527 스마트폰 구입에 관한 질문입니다. [5] 엑스프리마1308 10/11/04 1308
94526 엑셀에 VALUE 함수에 대해서 아시는분..? [2] Bikini1529 10/11/04 1529
94525 스타1 공유기에서 관리자모드로 들어갈수없을때요 [1] 파일롯토1280 10/11/04 1280
94524 자동차 보험이 200만원이 넘어가네요. [10] 삭제됨2275 10/11/04 2275
94523 동영상 인코딩에 대해 질문... [1] 그랜드파덜1342 10/11/04 1342
94522 만나이, 출생연도 기준 나이에 관한 질문입니다!! [5] 기다리다1913 10/11/04 1913
94521 dslr 질문입니다! [2] 행복a1566 10/11/04 1566
94520 자바 질문있습니다. 해시맵관련 [12] 롤즈.2624 10/11/04 2624
94519 힙합곡 추천해주세요 ! [16] 맠장3612 10/11/04 3612
94518 스타2 어떻게 해야 될까요... [6] WireTap1531 10/11/04 1531
94517 숱을 친다는 게 무슨 뜻이죠? [3] 우유친구제티13358 10/11/04 13358
94516 유부남들은 왜 아내가 혼자 어디 여행가면 좋아라 하죠? [11] 설아2555 10/11/04 2555
94515 답변주시는분들 감사드립니다. 그리고 [2] 니이모를찾아서1363 10/11/04 1363
94513 컴이 자꾸 다운됩니다 [2] 케이1385 10/11/04 1385
94512 '노영심'이라는 분은 어떤분인가요? [15] 갈반나2866 10/11/04 2866
94510 USB 무선 랜카드 질문입니다. [1] J.D1445 10/11/04 1445
94509 SHC-Z120L 핸드폰쓰시는분 계신가요? [1] 올빼미1527 10/11/04 1527
94508 네이버 오픈케스트 등록하려고 합니다. psycho dynamic1512 10/11/04 1512
94507 웃음을 참는 동영상? 같은 동영상은 어딜가야 볼 수 있나요?? [2] Psy_Onic-0-1559 10/11/04 1559
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로