<숙제> 내가 짠거


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;

public class Menu {
String menuName;
int menuPrice;
}




<메뉴만드는클래스>
package java_0803;

import java.util.ArrayList;
import java.util.Scanner;

public class MakeMenu {
Scanner sc;
ArrayList ar;
public MakeMenu(){
sc = new Scanner(System.in);
ar = new ArrayList();
}
public ArrayList select(){
while(true){
System.out.println("1.메뉴등록 2.종료");
int sel = sc.nextInt();
if(sel==1){
setMenu();
}else{
System.out.println("메뉴 등록 종료");
break;
}
}
return ar;
}
private void setMenu(){ 
//밖에서 호출할 일이 없고 내부에서만 호출하므로 private, 굳이 public 필요없음
System.out.println("메뉴명 입력");
String name = sc.next();
System.out.println("가격 입력");
int price = sc.nextInt();
Menu m = new Menu();
m.menuName = name;
m.menuPrice = price;
ar.add(m);
}
}

<메뉴파는 클래스>

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);

}

}



>
// < > 안에 Menu 를 넣음으로써 프린트할때 Menu로 형변환 안해도 됨(제네릭)


**********************************************


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;

}

}


<컨트롤>
package school2;

import java.util.Scanner;

public class Controll {
//어떤 메누가 있고
//어떤 메뉴를 선택했느냐
Scanner sc ;
Teacher t;
public Controll(){
sc = new Scanner(System.in);
t = new Teacher();
}
public void start(){
while(true){
System.out.println("1.학생등록");
System.out.println("2.학생검색");
System.out.println("3.종     료");
int num = sc.nextInt();
if(num==1){
//System.out.println("등록처리");
t.setStudent(sc);
}else if(num==2){
//System.out.println("학생검색처리");
t.getStudent(sc);
}else{
System.out.println("프로그램종료");
break;
}
}
}
}


<선생님>
package school2;

import java.util.ArrayList;
import java.util.Scanner;

public class Teacher {
ArrayList<Student> sar;
public Teacher(){
sar = new ArrayList<>();
}
//학생등록
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.add(s);
System.out.println(s.getName()+" : 학생등록완료");
}
//학생등록 끝
//학생검색
public void getStudent(Scanner sc){
System.out.println("검색할 이름을 입력하세요.");
String name = sc.next();
boolean check = true;
for(int i=0;i<sar.size();i++){
if(name.equals(sar.get(i).getName())){
System.out.println("이름 : "+sar.get(i).getName());
System.out.println("총점 : "+sar.get(i).getSum());
System.out.println("평균 : "+sar.get(i).getAvr());
check=false;
break;
}
}
if(check){
System.out.println("해당 학생이 없습니다.");
}
}
//학생검색 끝
}

**************************************************************
<내가하다가만거>

<메인>
package school;

public class SMain {
public static void main(String[] args) {
Start st = new Start();
st.menu();
}

}


<학생>

package school;
public class Student {
String name ;
int kor,eng, math;
int total = kor + eng + math;
int mean = (kor + eng + math)/3;
}


<스타트>
package school;

import java.util.ArrayList;
import java.util.Scanner;

public class Start {
Scanner sc;
public Start(){
sc = new Scanner(System.in);
}
public void menu(){
boolean check = true;
while(check){
System.out.println(" <초기 메뉴> ");
System.out.println("1.학생등록 2.학생검색 3.종료");
int select = sc.nextInt();
if(select==1){
//학생정보만들기 메소드 호출
Input i = new Input();
i.makeinfo(); 
}else if(select==2){
//학생검색메소드 호출
Search sh = new Search();
sh.findinfo();
}else if(select==3){
//종료
System.out.println("종료하겠습니다.");
check = false;
}
}
}
}


<인풋>
package school;

import java.util.ArrayList;
import java.util.Scanner;

public class Input {
Scanner sc;
ArrayList <Student> inar;
Student s ;
public Input(){
sc = new Scanner(System.in);
inar = new ArrayList<>();
s = new Student();
}
public ArrayList makeinfo(){
System.out.println("학생 이름을 입력하세요.");
s.name = sc.next();
System.out.println("국어점수를 입력하세요.");
s.kor = sc.nextInt();
System.out.println("영어점수를 입력하세요.");
s.eng = sc.nextInt();
System.out.println("수학점수를 입력하세요.");
s.math = sc.nextInt();
inar.add(s);
return inar;
}
}


<서치>
package school;

import java.util.ArrayList;
import java.util.Scanner;

public class Search {
Scanner sc ;
ArrayList<Student> sar;
public Search(){
sc = new Scanner(System.in);
sar = new ArrayList<>();
}
public void findinfo(){
Input ii = new Input();
System.out.println("찾고 싶은 학생 이름을 입력하세요.");
String findname = sc.next();
for(int k=0 ; k<ii.inar.size() ; k++){
if(findname.equals(ii.inar.get(k).name)){
System.out.println("국어점수 ; "+ii.inar.get(k).kor);
System.out.println("영어점수 ; "+ii.inar.get(k).eng);
System.out.println("수학점수 ; "+ii.inar.get(k).math);
}
}
}
}



********************************************************************


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"));

}


}


결과
>
EXID


*****************************************************
<교안 예시>

Enumeration en = ht.keys();
while(en.hasMoreElements()){
Object k = en.nextElement();
Object v = ht.get(k);
System.out.println(k+"."+v);
}



*************************************************

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 계열 key와 value   :  빅데이터 계열에서 많이 사용



******************************************************


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));

}

}

}


결과
>
girsday
AOA
AOA
EXID
missA

*******************************************************************


위에서 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("도시명:");

}

}

}


}


<날씨>
package weather;

public class Weather {
String city ;
String weat;
int temp ;
int humid ;
String wind ;
}



********************************************************
선생님거

<메인>
package weather2;

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, ",");
Hashtable<String, Weather> hs =  new Hashtable<>();
while(st.hasMoreTokens()){
Weather we = new Weather();
we.city = st.nextToken();
we.nalssi = st.nextToken();
we.gion = Integer.parseInt(st.nextToken());
we.humidity = Integer.parseInt(st.nextToken());
we.direct = st.nextToken();
hs.put(we.city, we);
}
System.out.println("도시명을 입력하세요.");
Scanner sc = new Scanner(System.in);
String name = sc.next();
Enumeration<String> en =hs.keys();
while(en.hasMoreElements()){
String k = en.nextElement();
if(name.equals(k)){
System.out.println("도 시 명 : " +hs.get(k).city);
System.out.println("날    씨 : " +hs.get(k).nalssi);
System.out.println("온    도 : " +hs.get(k).gion);
System.out.println("기    온 : " +hs.get(k).humidity);
System.out.println("풍    향 : " +hs.get(k).direct);
}
}
}

}



<날씨>
package weather2;

public class Weather {
String city;
String nalssi;
int gion;
int humidity;
String direct;
}


**************************************************************














블로그 이미지

테시리

,