*배열 실습
package arrayTest;
import java.util.Iterator;
import java.util.Scanner;
public class ArTask {
public static void main(String[] args) {
// 브론즈
// 1~10까지 배열에 담고 출력
int [] arData = new int[10];
for(int i = 0; i<10; i++) {
arData[i]=i+1; // arData에 반복되는 i(0~9)+1 값을 담아준다.
System.out.println(arData[i]);
}
}
}
package arrayTest;
import java.util.Iterator;
import java.util.Scanner;
public class ArTask {
public static void main(String[] args) {
// 10~1까지 중 짝수만 배열에 담고 출력
int[] arData = new int[10];
for(int i=0; i<5; i++) { // 짝수만 담을거라 절반
arData[i]=10-i*2; // 10부터 시작이라서 10-
System.out.println(arData[i]);
}
}
}
package arrayTest;
import java.util.Iterator;
import java.util.Scanner;
public class ArTask {
public static void main(String[] args) {
// 1~30까지 배열에 담은 후 홀수만 출력
int[] arData = new int[30];
for(int i=0; i<30; i++) {
arData[i]=i+1 ;
if(i%2!=0){continue;}//2로 나눴을때 나머지가 0이 아니라면 즉시 다음 실행
System.out.println(arData[i]);
}
}
}
package arrayTest;
import java.util.Iterator;
import java.util.Scanner;
public class ArTask {
public static void main(String[] args) {
int[] arData = new int[30];
int sum=0;
for(int i=0; i<30;i++) {
arData[i]=i+1;
if(i%2==0) {continue;}//i가 2로 나눴을때(짝수) 다음 실행
sum +=arData[i]; //sum에 arData배열들의 합을 저장
System.out.println(sum);//출력
}
}
}
package arrayTest;
import java.util.Iterator;
import java.util.Scanner;
public class ArTask {
public static void main(String[] args) {
//// A~F까지 배열에 담고 출력
// char 형으로
System.out.println('B'-'A');//ASKII코드 값이 있기때문에 문자끼리 연산이 가능 66-65=1
char[] arData=new char[6];
for(char i='A'; i<'G'; i++) {// i=i+1 A(65)+1은 66 char되면서 B 자동형변환이 두번일어난다
arData[i-65]=i; //첫번째 i(A)는 65, 0번째 방이 되기위해 -65 A~F를 담는다
System.out.println(arData[i-65]);//0~5번방 출력
}
// int 형으로
int[] arData1 = new int[6];
for(int i=0; i<arData1.length; i++) {
arData1[i]=(65+i); //첫 배열이 A(65)가 되기위해 +65
System.out.println((char)arData1[i]);//형변환 출력
}
}
}
package arrayTest;
import java.util.Iterator;
import java.util.Scanner;
public class ArTask {
public static void main(String[] args) {
//// A~F까지 중 C제외하고 배열에 담은 후 출력
char[] arData=new char[5]; // 5개만 배열에 담을거기때문에 [5]
for(int i=0; i<arData.length; i++) {
arData[i]=(char)(i>1?i+66:i+65);
//2번째방에 C가 들어가는데 2번째방에서 66을 더해주면
//C->D가 된다
//0,1(A,B)는 그대로 출력해주기 위해 +65
System.out.println(arData[i]);
}
}
}
package arrayTest;
import java.util.Iterator;
import java.util.Scanner;
public class ArTask {
public static void main(String[] args) {
// 골드
// 5개의 정수를 입력받고 배열에 담은 후 최대값과 최소값 출력
Scanner sc = new Scanner(System.in);
int max,min=0; // 최대값 최소값 초기화
int[] arData = new int[5]; //입력받을 배열
System.out.println("정수 다섯개를 입력하시오");
for (int i = 0; i < arData.length; i++) {
arData[i]=sc.nextInt(); // 입력받은 정수를 배열에 넣기
System.out.println(arData[i]);//입력받은 정수 확인
}
max = arData[0]; // 배열의 0번째 값을 일단 최대값에 넣기
min = arData[0]; // 배열의 0번째 값을 일단 최소값에 넣기
for(int i=0; i<arData.length; i++) {
if(max<arData[i]) {max=arData[i];}//배열 0번째방에서 다음방을비교후 다음방이 더 크면 max에 저장
if(min>arData[i]) {min=arData[i];}//배열 0번째방에서 다음방을비교후 다음방이 더 작으면 min에 저장
}
System.out.println("최대값"+max+"\n최소값"+min);//출력
}
}
// 다이아
// 사용자가 입력할 정수의 개수만큼 배열을 만든 후 정수를 입력받고 평균 구하기
int [] arData= null; // 배열의 크기가 모르는 초기화
double avg = 0; //평균 초기화
int total = 0;// 총합 초기화
Scanner sc = new Scanner(System.in);
System.out.println("몇개의 정수를 입력하실 건가요");
arData = new int[sc.nextInt()];//입력한 값으로 배열의 길이 선택
for (int i = 0; i < arData.length; i++) {
System.out.println(i+1+"번째 정수:");
arData[i]=sc.nextInt(); // 배열에 들어갈 값 입력
total +=arData[i]; // 배열안에 값들의 총합
}
avg =Double.parseDouble //문자열에서 double형으로 바꾸기
(String.format //String.format은 문자형 형식지정 여기부터 문자열 값
("%.3f",(double)total / arData.length));// 서식문자는 String(문자열 클래스) 관리
// 계산값을 서식문자로 전달하여
// double 형으로 소수점셋째자리까지 출력
System.out.println("평균값은:"+avg+"입니다");//출력
}
}
package arrayTest;
import java.util.Scanner;
public class ArrayTask {
public static void main(String[] args) {
// 각 버튼을 눌렀을 때, 이동하는 페이지는 다음과 같다.
// btn1 : 회원가입 페이지
// btn2 : 로그인 페이지
// btn3 : 마이 페이지
// btn4 : 로그아웃
// 회원가입 -> 로그인 -> 마이 페이지
// 위 순서대로 입력해야 하며, 만약 이전 단계를 진행하기 전에 다음 단계 버튼을 누를 경우, 이전 단계에 대한 메세지를 출력해준다.
// 예) 로그인 클릭 시, "회원가입을 먼저 진행해주세요" 출력
// 회원가입에 성공했어도, 로그인을 안하고 마이페이지를 선택하면 메세지는 이전 단계에 대한 메세지가 출력되지만
// 다시 회원가입부터 진행해야 한다.
// 알맞은 단계의 버튼을 누르면, 해당 단계에 대한 메세지를 출력해준다.
// 예) 회원가입 클릭 시, 회원가입 성공
// 로그인 클릭 시, 로그인 성공
// 마이 페이지 클릭 시, 본인 이름과 나이 출력
// 로그아웃 클릭 시, 로그아웃 성공
// TODO 6일차 강의 다시보면서 주석달아보기
String[] arButton = {"btn1", "btn2", "btn3", "btn4"}; //버튼 선택 문자열
String[] arMessage = {"회원가입 성공", "로그인 성공", "홍길동(20)", "로그아웃 성공"};//->btn 1,2,3,4 순서대로 눌렀을때 출력
String[] arError = {"회원가입을 먼저 진행해주세요", "로그인을 먼저 진행해주세요"};//btn1을 진행하지않고 btn2진행시 btn1,2를 진행하지 않고 3 진행시
String errorMessage = "다시 시도해주세요"; //btn1,2,3,4 외 입력시 출력문자열
Scanner sc = new Scanner(System.in);
int choice = 0, previous = 0; //입력받을 정수, 이전에 입력받은 것을 임시로 담아줄 변수
while(true) {
for (int i = 0; i < arButton.length; i++) {
System.out.println(i + 1 + ". " + arButton[i]); //버튼선택 메뉴출력
}
previous = previous == 0? 0 : choice; //사용자에게 입력받기 전 입력한 choice를 받아줌
//previous가 0일때만 0 아니면 이전값 담기
choice = sc.nextInt();// 정수 입력받음
if(choice < 1 || choice > 4) {System.out.println(errorMessage); continue;}
//입력받은 choice가 1보다 작고 4보다 크면 다시 실행
if(choice == 4) {
System.out.println(arMessage[3]); break;}
//choice가 4면 로그아웃
if(choice - 1 != previous && choice !=1) { //입력한것의 이전단계가 아닐때
//1을 두번누르면 에러,&& choice !=1 추가
previous = 0; //문제가 생기면 제일 처음에 회원가입부터 하기위해 이전값을 담지말고 0으로 초기화
System.out.println(arError[choice - 2]);//1 이전 2,3을 눌렀을때
//arError 의 0번째,1번째 문자열을 출 하기 위함
continue;
}
System.out.println(arMessage[choice - 1]);//입력에 성공한 메세지
previous = choice; //성공했을때 previous에 choice값 담기
}
}
}
package stringTest;
public class StringTest {
//문자, 배열관계 확인
//String 클래스 안에 캐릭터 배열 존재
public static void main(String[] args) {
String data = "ABC";
System.out.println(data.length()); // 3 배열의 길이
System.out.println(data.charAt(1)); // 1번째 방 배열의 값
System.out.println(data.indexOf('C')); // C라는 배열의 값의 배열의 주소
}
}
2차원 배열 : 배열 안에 배열
*행부터 접근한다.
2차원 배열 : 배열 안에 배열
1차원 배열을 여러 개 선언할 때 관리하기 힘들기 때문에
2차원 배열을 한 번 선언한다.
※ 2차원 배열부터는 메모리 낭비가 심하므로 선호하지 않는다.
2차원 배열 선언
자료형[ ][ ] 배열명 = {{값1, 값2, 값3,...}, {값4, 값5, 값6,...}};
자료형[ ][ ] 배열명 = new 자료형[행][열];
자료형[ ][ ] 배열명 = null;
int[][] arrData = new int[2][3];
□ arrData arrData.length(행의 길이)
□□ arrData[행] arrData[행].length(열의 길이)
□□□ □□□ arrData[행][열]
배열[의][면][행][열]
4 3 2 1
package arrayTest;
public class ArrTest{
//2차원 배열
public static void main(String[] args) {
int[][] arrData= {{3,4,5},{7,8,9}};
// int length = 0;
// for(int i=0; i<arrData.length; i++) {
// length+= arrData[i].length;
// }
for(int i=0; i<arrData.length; i++) {
for(int j=0; j<arrData[i].length; j++){
System.out.println(arrData[i][j]);
}}
// 1차원배열로 해결방법
// for(int i=0; i<length; i++) {
// System.out.println(arrData[i/3][i%3]);
// }
}
}
메소드
이름 뒤에 소괄호.
단, 키워드 뒤에 소괄호는 메소드가 아니다.
f (x) = 2x+1
메소드 이름 매개 리턴값
변수
메소드 선언
(1)리턴타입 (2)메소드명(자료형(3)매개변수형, ...){
(4)실행할 문장
(5)return 리턴값;
}
(1) 리턴 값이 있다면 리턴 값의 자료형을 작성하고, 리턴 값이 없다면 비워놓지 않고 void를 작성한다.
(2) 동사로 작성한다.(연필(매개변수)을 쓴다(메소드))
(3) 외부에서 전달받을 값이 있다면, 자료형과 순서에 맞게 선언해준다.
생략 시, 외부에서 값을 전달받을 수 없게 된다.
(4) 생략이 가능하다. 메소드의 기능을 구현하는 로직을 작성한다.
(5) 생략이 가능하다. 리턴값이 있다면, 사용한 부분 통채로를 리턴값으로 봐야한다.
메소드 선언 순서
문제) 두 정수의 덧셈 메소드 선언
1. 메소드 이름을 생각한다.
add(){}
2. 매개변수를 생각한다.
add(int number1, int number2){}
3. 실행할 문장을 작성한다.
add(int number1, int number2){
int result = number1+ number2;
}
4. 리턴 값을 작성한다.
add(int number1, int number2){
int result = number1+ number2;
return result;
}
5. 리턴 타입을 작성한다.
int add(int number1, int number2){
int result = number1+ number2;
return result;
}
메소드 주의사항
메소드를 선언할 때에는 {}(중괄호)가 있으며, 반드시 메소드 밖에서 선언한다.
메소드를 사용할 때에는 {}(중괄호)가 있으며, 반드시 메소드 안에서 사용한다.
package methodTest;
public class MethodTest {
// f(x)=2x+1
//static
int f(int x){
int result =2*x+1;
return result;
}
// static
// 컴파일러가 가장 먼저 메모리에 할당해준다.
// 일반 메소드를 static 메소드에서 사용하기 위해서는 아래의 두가지 방법이 존재한다.
// 1. 일반 메소드에 static을 작성하여 시간대에 메모리로 올려준다.
// 2. 일반 메소드의 소속을 알려준다.
public static void main(String[] args) {
MethodTest methodTest = new MethodTest();
System.out.println(methodTest.f(3));
}
}
'웹개발 수업 > JAVA' 카테고리의 다른 글
웹개발_JAVA 8 (0) | 2023.01.30 |
---|---|
웹개발_JAVA 7 (0) | 2023.01.27 |
웹개발_JAVA 5 (0) | 2023.01.19 |
웹개발_JAVA 4 (0) | 2023.01.18 |
웹개발_JAVA 3 (0) | 2023.01.17 |
댓글