본문 바로가기

Java

2023.04.14 null값 처리,

 * 초기화 값이 없는 상태로 선언만 한경우, 정수는 0, 실수는0.0, 그외는 null값으로 초기화 된다. 
       * 
       * */
      
java에서도 null값이 존재 하는데 null값은 에러의 주된 원인이 되기도 한다.
null : 참조타입 변수는 객체를 참조하지 않는다(값이 없다)는 뜻


      int[ ] intArray = null;
      if(intArray != null) { //nullPointException에러가 발생하지 않도록 유도 해주면 좋다.
         intArray[0] = 10;
      }else {
         System.out.println("intArray가 널값을 가지고있다.");
      }

 


package kr.ac.busanit.ch03;

 

//메소드 - 실습

 

public class MethodExam02 {

 

public static void main(String[] args) {

//몸풀기 실습

//구구단 2~9단까지 출력을 메소드화 하여 소스코드를 작성해봅시다.

//구구단출력 메소드 호출

// gugudan();

 

//구구단을 특정단수~특정단수까지 출력하는 메소드를 생성하고 호출해봅시다.

//ex> 매개변수 3,6 -> 3단부터 6단까지 출력해주는 구구단 메소드

// System.out.println("구구단을 특정단수~특정단수까지 출력하는 메소드를 생성하고 호출해봅시다.");

// gugudan2(2,5);

 

//매개변수 두개를 받아서 시작단~종료단 출력을 하도록하는데

//반환값을 설정하여 문자열로 반환되도록 -> 반환된 문자열을 출력하도록 소스코드 작성을 해봅시다.

 

//메소드 호출 및 반환값인 문자열 출력하도록

String result = gugudan3(7,9);

System.out.println(result);

}

 

//구구단 메소드 생성

static void gugudan() {

for(int i=2;i<=9;i++) {

for(int j=1;j<=9;j++) {

System.out.println(i+"x"+j+"="+i*j);

}

}

}

//매개변수 두개를 받아서 특정단수~특정단수까지 출력하는 메소드를 생성

static void gugudan2(int a,int b) {

for(int i=a;i<=b;i++) {

System.out.println("======"+i+"단======");

for(int j=1;j<=9;j++) {

System.out.println(i+"x"+j+"="+i*j);

}

}

}

 

//매개변수 두개를 받아서 시작단~종료단까지 문자열로 저장후 반환하는 메소드 생성

//문자열에서 줄바꿈은 \n으로 표현 가능함.

static String gugudan3(int a,int b) {

String result2 = "";

for(int i=a;i<=b;i++) {

result2 += ("======="+i+"단시작======\n");

for(int j=1;j<=9;j++) {

result2 += (i+"x"+j+"="+i*j+"\n");

 

}

} return result2;

 

}

}


package kr.ac.busanit.ch03;

 

import java.util.Scanner;

 

//메소드 - 실습

// bmi(체질량지수)측정기 구현하기

// 공식 : 몸무게 / 키의제곱

// 사용되는 단위 : 몸무게(kg), 키(m)

// ex) 65 / (1.7x 1.7)

// 측정결과는 다음과 같이 나눌 수 있다.

/*

* <18.5 : 저체중

* 18.5~24.9 : 표준

* 25~29.9 : 과체중

* 30~34.9 : 비만

* 35 <= : 고도비만

*

* 키와 몸무게를 입력받도록 하고, 결과값은 다음과 같이 출력하도록 하자

* bmi 수치는 : 25입니다.

* 과체중 입니다.

* */

public class BmiTest {

 

public static void main(String[] args) {

//소수점 두자리까지만 표현을 하고 싶다.

// System.out.println(Math.round((1.1165*100))/100.0);

 

Scanner sc1 = new Scanner(System.in);

Scanner sc2 = new Scanner(System.in);

 

System.out.print("키를 입력하세요 :");

double h = sc1.nextDouble();

System.out.print("몸무게를 입력하세요 : ");

double w = sc2.nextDouble();

if(h>10) {

h= h/100;

}

 

double result1 = bmi(w,h);

double bmi = Math.round((result1*100))/100.0;

System.out.println(bmi);

String result2 = grade(result1);

System.out.println("bmi 수치는: "+bmi+"입니다.");

System.out.println(result2+"입니다.");

}

 

static double bmi(double w, double h) {

double result = w/(h*h);

// bmi의 결과값이 소수점자리 두자리까지 표현하도록 수정

// Math.round(); -> 실수를 정수로 변환해줌

return result;

}

 

static String grade(double a) {

String result = "";

if(a>=35) {

result = "고도비만";

}else if(a>=30) {

result = "비만";

}else if(a>=25) {

result = "과체중";

}else if(a>=18.5) {

result = "표준";

}else {

result = "저체중";

}

 

return result;

 

}

}

 

 


package kr.ac.busanit.ch03;

 

//메소드 오버로딩

//동일한 이름을 가지는 메소드를 만드는 행위

//매개변수의 타입, 개수, 순서 중 하나라도 달라야 오버로딩 성립

public class MethodExam03 {

 

public static void main(String[] args) {

// 메소드 오버로딩 활용예시 : System.out.print(혹은 println)메소드

// System.out.print(true);ㄴ

 

//오버로딩된 메소드를 호출 (매개변수의 갯수를 다르게하여 구성)

// gugudan(3,4);

// gugudan(7);

 

//오버로딩된 메소드를 호출 (매개변수의 타입을 다르게하여 구성)

add(1,2);

add("1","2");

 

//메소드의 매개변수는 순서가 중요하다.

// myIntroduce(0, "김서영"); -> 메소드생성단계에서 정해놓은 순서를 무시하면 에러발생

myIntroduce("김서영", 30);

myIntroduce(10,"홍길동");

//오버로딩된 메소드를 호출(매개변수의 순서를 다르게 하여 구성)

 

 

}

//같은 매개변수를 받을때도 타입이 다르면 순서를 다르게해서 오버로딩 구성 가능

static void myIntroduce(int age, String name) {

System.out.println("이름은 : "+name+"이고, 나이는"+age+"입니다.");

}

 

//매개변수는 여러타입을 넣어도 상관없다. 대신 사용을 할때 매개변수의 순서가 중요!

static void myIntroduce(String name, int age) {

System.out.println("이름은 : "+name+"이고, 나이는"+age+"입니다.");

}

 

//매개변수의 타입을 다르게 지정하여 오버로딩

static void add(int a, int b) { //산술연산 더하기를 해주는 add메소드

System.out.println(a+"+"+b+"="+(a+b));

}

 

static void add(String a, String b) { //문자열을 연결해주는 add메소드

System.out.println(a+"+"+b+"="+(a+b));

}

 

// 같은 gugudan메소드이지만 매개변수의 개수의 차이로 다른 메소드가 된다.

static void gugudan() {

for(int i=2;i<=9;i++) {

for(int j=1;j<=9;j++) {

System.out.println(i+"x"+j+"="+i*j);

}

}

}

 

static void gugudan(int target) {

System.out.println("======"+target+"단======");

for(int j=1;j<=9;j++) {

System.out.println(target+"x"+j+"="+target*j);

}

}

 

static void gugudan(int a,int b) {

for(int i=a;i<=b;i++) {

System.out.println("======"+i+"단======");

for(int j=1;j<=9;j++) {

System.out.println(i+"x"+j+"="+i*j);

}

}

}

 

}


package kr.ac.busanit.ch03;

 

//변수의 유효 범위

// 전역변수 지역변수로 나뉜다.

//전역변수 - 클래스 영역에서 선언

// 지역변수 - 클래스영역 외(메소드, 생성자, 조건문, 반복문 등)

 

public class VarScope {

//전역변수

static int global = 0; //클래스영역에서 생성된 변수

static boolean globalScope = true;

public static void main(String[] args) {

//지역변수

int local = 1; //메소드영역에서 생성된 변수

global = 1;

globalScope = false;

boolean localScope = true;

if(localScope) {

int num = 1;

System.out.println(num);

}else {

int num = 2;

System.out.println(num);

}

 

simple();

 

for(int num = 0; num <5; num++) {

// int num=0; -> 중복선언, 사용불가

}

 

}

static void simple() {

globalScope = false;

int num = 3;

System.out.println(num);

}

// local = 3; -> 사용가능한 범위를 벗어났기때문에 문법적 에러 발생

 

static void method1(int num) {

// int num = 0; -> 중복선언, 사용불가

}

}


package kr.ac.busanit.ch03;

 

//변수 유효범위 테스트

public class VarScope02 {

static int num = 10;

public static void main(String[] args) {

System.out.println(num); //사용되는 위치에 따라서 지역변수 혹은 전역변수로 인식된다.

int num = 20;

System.out.println(num);

temp();

}

static void temp() {

int num= 30;

System.out.println(num);

}

 

}

 

'Java' 카테고리의 다른 글

04.19.printf  (0) 2023.04.19
선생님 새로 오심  (0) 2023.04.17
2023.04.13. 배열, 메소드  (0) 2023.04.13
2023.04.12 스캐너, 조건문, 반복문  (0) 2023.04.12
04.11 JAVA 시작  (0) 2023.04.11