<숙제> 내가 짠거
3개 클래스로 구성
<메인클래스>
package hw_0802;
public class HwMain {
public static void main(String [] args){
Chef c = new Chef();
c.start(); //Chef 클래스의 start 메소드 실행
}
}
<Food클래스>
package hw_0802;
public class Food {
String name;
int price;
}
<Chef클래스>
package hw_0802;
import java.util.ArrayList;
import java.util.Scanner;
public class Chef {
Scanner sc;
Food f;
ArrayList arl; // Food클래스의 객체를 생성해 name과 price를 스캐너로 입력받은 후 어레이리트스에저장.
ArrayList eatnum; // 생선된 메뉴의 번호를 어레이리스트에 저장하고나서 Food저장한 어레이리스트의 인덱스로사용.
public void start(){
//시작메소드 (메인에서실행)
prepare(); //prepare메소드실행
}
public void prepare(){
sc = new Scanner(System.in);
System.out.println("선택해주세요. 1.메뉴등록 2.가게오픈");
int select = sc.nextInt();
if(select==1){
menu(); //메뉴등록메소드
prepare(); //메뉴등록이 끝나면 prepare메소드 다시 실행
}else{
open(); //가게오픈메소드
}
}
public void menu(){
//등록메소드
sc = new Scanner(System.in);
arl = new ArrayList<>();
boolean check=true;
// f = null;
while(check){
//스캐너로 입력받고 Food클래스의 name과 price에 저장 후 arraylist에 저장 반복
f = new Food();
System.out.println("메뉴명을 입력하세요.");
f.name = sc.next();
System.out.println("가격을 입력하세요.");
f.price = sc.nextInt();
arl.add(f); //어레이리스트에추가
System.out.println("계속 메뉴추가 하시겠습니까. 1.예 2.아니오");
int select = sc.nextInt();
if(select==2){
check=false; //논리연산자를 false로 바꿔서 반복문 빠져나오기
}
}
}
public void open(){
eatnum = new ArrayList<>(); //음식번호를 저장하는 arraylist인 eatnum
System.out.println("<판매 메뉴>");
for(int i=0 ; i<arl.size(); i++){
Food fo = (Food)arl.get(i); //Food에 저장시킨 arraylist가 오브젝트타입이므로 Food타입으로 형변환해서 참조변수 fo에 저장
System.out.print("메뉴"+(i+1)+" : "+fo.name+"/"); // 0번부터 시작하니까 1씩 더해서 음식번호와 음식이름 출력
System.out.println("가격 : "+fo.price); // 이름옆에 가격을 함께 출력
}
boolean check=true;
while(check){
// 먹고싶은메뉴를 선택하는 반복문
System.out.println("먹고싶은 메뉴번호를 입력하세요.");
int num = sc.nextInt();
System.out.println("1. 메뉴추가선택 2.주문완료");
int stop=sc.nextInt();
eatnum.add(num);
if(stop==2){
// 주문완료하면 2를 누르고 논리연산은 false로 바꿔서 반복문을 빠져나온다.
check=false;
}
}
System.out.println("<선택한 메뉴>");
int totalprice =0; //합계금액 0원부터 누적하기위해 0을 입력함
for(int j=0;j<eatnum.size();j++){
//eatnum 어레이리스트에음식번호를 저장하고 이 번호를 음식정보를 저장한 arl 어레이리스트의 인덱스번호로 사용함
Food foo =(Food)arl.get((int)eatnum.get(j)-1);
//Food타입의 foo에 선택한 메뉴를 저장.
System.out.println(foo.name);
totalprice = totalprice + foo.price; //합계금액 누적합
}
System.out.println("합계금액:"+totalprice+"원");
}
}
***********************************************************
숙제 쌤이 하신거
<메인클래스>
package java_0803;
import java.util.ArrayList;
public class FMain {
public static void main(String [] args){
MakeMenu m = new MakeMenu();
SellMenu s = new SellMenu();
Count c = new Count();
ArrayList ar = m.select();
ar = s.sell(ar);
c.cal(ar);
}
}
<메뉴파는 클래스>
package java_0803;
import java.util.ArrayList;
import java.util.Scanner;
public class SellMenu {
Scanner sc ;
ArrayList mar;
public SellMenu(){
sc = new Scanner(System.in);
mar = new ArrayList<>();
}
public ArrayList sell(ArrayList ar){
for(int i = 0 ; i < ar.size() ; i++){
System.out.println(((Menu)ar.get(i)).menuName);
}
while(true){
System.out.println("1.메뉴선택 2.선택종료");
int sel = sc.nextInt();
if(sel==1){
setMar(ar);
}else{
System.out.println("선택종료");
break;
}
}
return mar;
}
private void setMar(ArrayList ar){ //매개변수 사용해서 ArrayList 사용
System.out.println("메뉴명 입력");
String menu = sc.next();
for(int i=0 ; i<ar.size() ; i++){
if(menu.equals(((Menu)ar.get(i)).menuName)){
mar.add(ar.get(i));
}
}
}
}
<총합 계산하는 클래스>
package java_0803;
import java.util.ArrayList;
public class Count {
public void cal(ArrayList ar){
int sum=0;
for(int i=0 ; i<ar.size(); i++){
System.out.println(((Menu)ar.get(i)).menuName);
sum = sum + ((Menu)ar.get(i)).menuPrice;
}
System.out.println("총 계산한 금액 : "+sum);
}
}
**************************************
봐야할 라이브러리 rt.jar
(이클립스 좌측 Jre System Library)
**************************************
익스플로러, 엑티브x
웹표준 > 크롬 익스플로러 파이어폭스 ...
<웹표준>
html5 **
css3 **
이 두개는 정적인 페이지
앞으로
javascript(jquery) *******
가 많이 쓰일것 같다.
*****************************************
언어순위 C ,C++ 임베디드에 많이 사용 (컴파일시 용량이 적다)
최근 임베디드에 사용되는 언어도 Javascript로 변경 추세
Java , JavaScript 공부
*****************************************
PHP 는 유지보수용
Python : IoT 사물인터넷으로 최근 각광받음
*******************************************
PC에서 짠 프로그램을 모바일로 구동시키기위한 개발?
*******************************************
고사양의 하드웨어 필요? > no
이제부터
프로그램은 웹하드(서버)에 저장되어있고 내 컴퓨터에선 신호만 받는 역할로 될 것 같다.
크롬북
크롬os : 시스템을 사용하는게 아니라 웹으로 작동하는 os (웹상에서 작동)
웹으로 구동하므로 고사양의 하드웨어가 필요 없어진다.
>> 고사양 하드웨어가 필요 없어지므로 싸고 저사양인 넷북이 다시 부활
(넷북 망했었음)
*********************************************
웹표준 가지고 3D게임도 제작 가능하다
*********************************************
다시 수업
package java_0803;
import java.util.ArrayList;
public class FMain {
public static void main(String [] args){
ArrayList<Menu> ar = new ArrayList<>();
// < > 안에 Menu 를 넣음으로써 프린트할때 Menu로 형변환 안해도 됨(제네릭)
Menu m = new Menu();
ar.add(m);
System.out.println(ar.get(0).menuName);
}
}
**********************************************
package java_0803;
import java.util.ArrayList;
public class FMain {
public static void main(String [] args){
ArrayList<Integer> ar = new ArrayList<>();
int a = 10;
int b = 22;
int c = 33;
ar.add(a);
ar.add(b);
ar.add(c);
a=ar.get(0);
b=ar.get(1);
c=ar.get(2);
}
}
> 제네릭
정수를 어레이리스트에 담고싶다.
그런데 출력할때 에러가 생긴다. >>> 형변환하거나 제네릭을 사용
제네릭: <>안에 데이터 타입을 입력
그런데 < > 안에는 클래스가 들어가야하므로 정수를 나타내는 클래스 Integer 타입으로 입력
****************************************************************
선생님 코드에서 ArrayList 부분에 <Menu> 제네릭이용하면 형변환할 필요가 없어진다.
******************************************************************
<연습>
School
1.학생등록
1)등록
이름,국어,영어,수학
2)종료
2.학생검색
1)검색
이름으로 검색 - 이름, 총점, 평균 프린트
3. 종료
프로그램 종료
*******************************************************************
<선생님코드>
<메인>
package school2;
public class SchoolMain {
public static void main(String[] args) {
Controll c = new Controll();
c.start();
}
}
<학생>
package school2;
public class Student {
private String name;
private int kor;
private int eng;
private int math;
private int sum;
private int avr;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public int getSum() {
return sum;
}
public void setSum() {
this.sum = this.kor + this.eng + this.math;
setAvr(); //총점계산과 평균계산
}
public int getAvr() {
return avr;
}
public void setAvr() {
this.avr = this.sum/3;
}
}
********************************************************************
ArrayList의 < > 안에 넣는 것 제네릭
제네릭 공부
제네릭 : 어떤 타입으로 지정할 것인가?
*********************************************
Map 클래스는 인덱스 번호가 아니라 키와 객체의 쌍으로 데이터를 관리한다
관련메소드
put(key, value)
**********************************************
package MapTest;
import java.util.Hashtable;
public class TestMap {
public static void main(String[] args) {
//수지 ,missA,초아,AOA,하니,EXID
Hashtable<String , String > hs = new Hashtable<>();
hs.put("suji", "missA");
hs.put("choa", "AOA");
hs.put("hani", "EXID");
//hs.put("choa", "크레용팝"); //초아가 겹치므로 안됨,키값이 중복되면 하나는 사라짐
System.out.println(hs.get("hani"));
}
}
*************************************************
package MapTest;
import java.util.Enumeration;
import java.util.Hashtable;
public class TestMap {
public static void main(String[] args) {
//수지 ,missA,초아,AOA,하니,EXID
Hashtable<String , String > hs = new Hashtable<>();
hs.put("suji", "missA");
hs.put("choa", "AOA");
hs.put("hani", "EXID");
//hs.put("choa", "크레용팝"); //초아가 겹치므로 안됨,키값이 중복되면 하나는 사라짐
//키들을 다른 배열로 넣는다..Enumertation :열거
Enumeration<String> e = hs.keys();
while(e.hasMoreElements()){
String k = e.nextElement();
System.out.println(hs.get(k));
}
}
}
AOA
EXID
missA
******************************************************
Map으로 나온 값을 어레이리스트에 저장하고 출력하기
package MapTest;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
public class TestMap {
public static void main(String[] args) {
//수지 ,missA,초아,AOA,하니,EXID
Hashtable<String , String > hs = new Hashtable<>();
hs.put("suji", "missA");
hs.put("choa", "AOA");
hs.put("hani", "EXID");
hs.put("jimin", "AOA");
hs.put("mina", "girsday");
//hs.put("choa", "크레용팝"); //초아가 겹치므로 안됨,키값이 중복되면 하나는 사라짐
//키들을 다른 배열로 넣는다..Enumertation :열거
Enumeration<String> e = hs.keys();
ArrayList <String> ar = new ArrayList<>();
while(e.hasMoreElements()){
String k = e.nextElement();
ar.add(hs.get(k));
//System.out.println(hs.get(k));
}
for(int i=0 ; i<ar.size() ; i++){
System.out.println(ar.get(i));
}
}
}
*******************************************************************
위에서 Teacher 클래스 수정하기
어레이리스트에 담은 정보를 해쉬테이블에 담기
package school2;
import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Scanner;
public class Teacher2 {
//저장 : 어레이리스트 >> 해쉬테이블로 저장
Hashtable<String, Student> sar;
public Teacher2(){
sar = new Hashtable<>();
}
//학생등록
public void setStudent(Scanner sc){
Student s = new Student();
System.out.println("이름 입력");
s.setName(sc.next());
System.out.println("국어 입력");
s.setKor(sc.nextInt());
System.out.println("영어 입력");
s.setEng(sc.nextInt());
System.err.println("수학 입력");
s.setMath(sc.nextInt());
s.setSum(); //총점평균
sar.put(s.getName(), s);
System.out.println(s.getName()+" : 학생등록완료");
}
//학생등록 끝
//학생검색
public void getStudent(Scanner sc){
System.out.println("검색할 이름을 입력하세요.");
String name = sc.next();
boolean check = true;
Enumeration<String> e = sar.keys();
while(e.hasMoreElements()){
String k = e.nextElement();
if(name.equals(k)){
System.out.println("이름 : "+name);
System.out.println("총점 : "+sar.get(k).getSum());
System.out.println("평균 : "+sar.get(k).getAvr());
check=false;
break;
}
}
if(check){
System.out.println("해당 학생이 없습니다.");
}
}
//학생검색 끝
}
######################################################
map(key, value) (Object, Object)
<String, String>
put("hani","EXID");
put("Choa","AOA");
키값이 중복되면 나중에 들어간 것만 남고 기존의 것은 없어진다.
벨류는 중복이돼도 상관없다.
get("choa") => "AOA" 리턴 (벨류가 리턴)
Enumeration(열거형) e = hs.keys();
// hani Choa
while(e.hasmoreElements()){
String k = e.nextElement
System.out.println(hs.get(k));
}
****************
map(key, value) (Object, Object)
<String, Student>
put("hani",s);
put("Choa",s);
키값이 중복되면 나중에 들어간 것만 남고 기존의 것은 없어진다.
벨류는 중복이돼도 상관없다.
get("choa") => "AOA" 리턴 (벨류가 리턴)
Enumeration(열거형) e = hs.keys();
// hani Choa
while(e.hasmoreElements()){
String k = e.nextElement
System.out.println(hs.get(k).getName());
}
*****************************************************
날씨 csv 파일
자르고 해쉬테이블에 저장하고 프린트
내가 한거
<메인>
package weather;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Scanner;
import java.util.StringTokenizer;
public class WMain {
public static void main(String[] args) {
String w ="서울,비,23,90,서풍,대전,비,30,80,북서풍,대구,눈,32,50,북풍,부산,흐림,28,80,남서풍,제주도,맑음,18,75,서풍";
StringTokenizer st = new StringTokenizer(w, ",");
Weather wth = new Weather();
Hashtable<String, Weather > whash = new Hashtable<>();
Enumeration<String> e = whash.keys();
Scanner sc =new Scanner(System.in);
while(st.hasMoreTokens()){
String city = st.nextToken();
String weat = st.nextToken();
int temp = Integer.valueOf(st.nextToken());
int humid = Integer.valueOf(st.nextToken());
String wind = st.nextToken();
whash.put(city, wth);
}
System.out.println("도시명입력");
String name = sc.next();
while(e.hasMoreElements()){
String k = e.nextElement();
if(name.equals(k)){
System.out.println("도시명:");
}
}
}
}
'프로그래밍, 통계학 > Java Fundamental' 카테고리의 다른 글
[20일차]2015.08.05.수, 네트워크 (0) | 2015.08.05 |
---|---|
[19일차]2015.08.04.화, 입출력 (0) | 2015.08.04 |
[17일차]2015.07.31.금, Wrapper 클래스사용, ArrayList (0) | 2015.07.31 |
[16일차]2015.07.30.목, 자주사용하는 클래스 (0) | 2015.07.30 |
[15일차]2015.07.29.수, StringBuffer,StringTokenizer (0) | 2015.07.29 |