Java static 함수
2023. 1. 26. 13:02ㆍJava
static 함수 - 정적 함수
=================
프로젝트 내 src 내 javabasic 패키지 내 Shop.java
package javabasic;
//상품명, 수량, 단가 멤버 변수
public class Shop {
private String sang;
private int su;
private int dan;
// setter method
public void setSang(String sang) {
this.sang = sang;
}
public void setSu(int su) {
this.su = su;
}
public void setDan(int dan) {
this.dan = dan;
}
// getter method
public String getSang() {
return this.sang;
}
public int getSu() {
return this.su;
}
public int getDan() {
return this.dan;
}
// 수량*단가
public int getTotal() {
return su * dan;
}
}
프로젝트 내 src 내 javabasic 패키지 내 Ex8Object.java
package javabasic;
import java.util.Scanner;
public class Ex8Object {
// 데이타 입력
public static void shopInput(Shop[] shop) {
Scanner sc = new Scanner(System.in);
// 데이타 입력
for (int i = 0; i < shop.length; i = i + 1) {
// 생성
shop[i] = new Shop();
System.out.println("상품명");
String sang = sc.nextLine();
shop[i].setSang(sang);
System.out.println("수량과 단가를 입력하세요");
int su = Integer.parseInt(sc.nextLine());
int dan = Integer.parseInt(sc.nextLine());
shop[i].setSu(su);
shop[i].setDan(dan);
System.out.println();
}
}
// 데이타 출력
public static void shopOutput(Shop[] shop) {
// 출력
System.out.println("번호\t상품명\t수량\t단가\t총금액");
for (int i = 0; i < shop.length; i = i + 1) {
System.out.println(i + 1 + "\t" + shop[i].getSang() + "\t" + shop[i].getSu() + "\t" + shop[i].getDan()
+ "\t" + shop[i].getTotal());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// Shop 에 저장할 갯수를 입력후 할당
// 상품정보를 키보드로 입력하여 출력하기
Scanner sc = new Scanner(System.in);
Shop[] shop;
int cnt;
System.out.println("저장할 상품의 갯수를 입력하세요");
cnt = Integer.parseInt(sc.nextLine());
// 메모리할당
shop = new Shop[cnt];
shopInput(shop);
shopOutput(shop);
}
}
Ex8Object.java 에서 수량과 단가를 입력하세요 에서
수량과 단가 사이에 엔터 구분자가 아닌 스페이스바 나 탭 같은 것을 쓰면 오류가 난다.
수량과 단가 사이 구분자는 엔터로 한다.
그렇게 쓰지 않으면 다음과 같이 오류가 뜬다.
저장할 상품의 갯수를 입력하세요
3
상품명
golf ball
수량과 단가를 입력하세요
2 500
Exception in thread "main" java.lang.NumberFormatException: For input string: "2 500"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at javabasic.Ex8Object.shopInput(Ex8Object.java:18)
at javabasic.Ex8Object.main(Ex8Object.java:51)
구분자를 엔터로 쓰면 결과는 다음과 같다.
저장할 상품의 갯수를 입력하세요
3
상품명
golf ball
수량과 단가를 입력하세요
2
10000
상품명
책
수량과 단가를 입력하세요
5
20000
상품명
화장품
수량과 단가를 입력하세요
1
2000
번호 상품명 수량 단가 총금액
1 golf ball 2 10000 20000
2 책 5 20000 100000
3 화장품 1 2000 2000
========================================
수량과 단가를 nextInt() 로 입력받을 때는 다음과 같이 쓴다.
========================================
프로젝트 내 src 내 javabasic 패키지 내 Ex8Object.java
package javabasic;
import java.util.Scanner;
public class Ex8Object {
// 데이타 입력
public static void shopInput(Shop[] shop) {
Scanner sc = new Scanner(System.in);
// 데이타 입력
for (int i = 0; i < shop.length; i = i + 1) {
// 생성
shop[i] = new Shop();
System.out.println("상품명");
String sang = sc.nextLine();
shop[i].setSang(sang);
System.out.println("수량과 단가를 입력하세요");
// int su = Integer.parseInt(sc.nextLine());
// int dan = Integer.parseInt(sc.nextLine());
int su = sc.nextInt();
int dan = sc.nextInt();
shop[i].setSu(su);
shop[i].setDan(dan);
sc.nextLine();
System.out.println();
}
}
// 데이타 출력
public static void shopOutput(Shop[] shop) {
// 출력
System.out.println("번호\t상품명\t수량\t단가\t총금액");
for (int i = 0; i < shop.length; i = i + 1) {
System.out.println(i + 1 + "\t" + shop[i].getSang() + "\t" + shop[i].getSu() + "\t" + shop[i].getDan()
+ "\t" + shop[i].getTotal());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// Shop 에 저장할 갯수를 입력후 할당
// 상품정보를 키보드로 입력하여 출력하기
Scanner sc = new Scanner(System.in);
Shop[] shop;
int cnt;
System.out.println("저장할 상품의 갯수를 입력하세요");
cnt = Integer.parseInt(sc.nextLine());
// cnt = sc.nextInt();
// 메모리할당
shop = new Shop[cnt];
shopInput(shop);
shopOutput(shop);
}
}
저장할 상품의 갯수를 입력하세요
3
상품명
golf ball
수량과 단가를 입력하세요
2 10000
상품명
책
수량과 단가를 입력하세요
5 20000
상품명
화장품
수량과 단가를 입력하세요
1 2000
번호 상품명 수량 단가 총금액
1 golf ball 2 10000 20000
2 책 5 20000 100000
3 화장품 1 2000 2000
========================================
저장할 상품의 갯수도 nextInt() 로 입력받을 때는 다음과 같이 쓴다.
========================================
프로젝트 내 src 내 javabasic 패키지 내 Ex8Obejct.java
package javabasic;
import java.util.Scanner;
public class Ex8Object {
// 데이타 입력
public static void shopInput(Shop[] shop) {
Scanner sc = new Scanner(System.in);
// 데이타 입력
for (int i = 0; i < shop.length; i = i + 1) {
// 생성
shop[i] = new Shop();
System.out.println("상품명");
String sang = sc.nextLine();
shop[i].setSang(sang);
System.out.println("수량과 단가를 입력하세요");
// int su = Integer.parseInt(sc.nextLine());
// int dan = Integer.parseInt(sc.nextLine());
int su = sc.nextInt();
int dan = sc.nextInt();
shop[i].setSu(su);
shop[i].setDan(dan);
sc.nextLine();
System.out.println();
}
}
// 데이타 출력
public static void shopOutput(Shop[] shop) {
// 출력
System.out.println("번호\t상품명\t수량\t단가\t총금액");
for (int i = 0; i < shop.length; i = i + 1) {
System.out.println(i + 1 + "\t" + shop[i].getSang() + "\t" + shop[i].getSu() + "\t" + shop[i].getDan()
+ "\t" + shop[i].getTotal());
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// Shop 에 저장할 갯수를 입력후 할당
// 상품정보를 키보드로 입력하여 출력하기
Scanner sc = new Scanner(System.in);//main 함수의 Scanner sc 와
//위의 shopInput(Shop[] shop) 함수 내의 Scanner sc 는 다른 객체이기 때문에
//여기서 nextInt() 를 사용하고 버퍼에 남은 엔터가 shopInput(Shop[] shop) 함수에서의 Scanner sc 객체로부터의
//입력에 아무런 영향을 주지 않는다. 왜냐하면 이름만 같고 다른 객체로 새로 객체를 만들어서 사용하기 때문이다.
//그래서 shopInput(Shop[] shop) 함수 내에서 main 에서 버퍼에 남은 엔터를 제거하기 위하여 쓰는 코드인
//sc.nextLine(); 구문은 맨 앞에 쓰지 않아도 되고 단지, shopInput(Shop[] shop) 함수에서 마지막에 쓴 sc.nextInt();
//두 줄에서 버퍼에 남은 엔터를 제거하여 처리하기 위한 sc.nextLine(); 구문 한 줄 만을 맨 마지막에 써주면 엔터제거를 용이하게 할 수 있다.
Shop[] shop;
int cnt;
System.out.println("저장할 상품의 갯수를 입력하세요");
// cnt = Integer.parseInt(sc.nextLine());
cnt = sc.nextInt();
// 메모리할당
shop = new Shop[cnt];
shopInput(shop);
shopOutput(shop);
}
}
저장할 상품의 갯수를 입력하세요
3
상품명
golf ball
수량과 단가를 입력하세요
2 10000
상품명
책
수량과 단가를 입력하세요
5 20000
상품명
화장품
수량과 단가를 입력하세요
1 2000
번호 상품명 수량 단가 총금액
1 golf ball 2 10000 20000
2 책 5 20000 100000
3 화장품 1 2000 2000
'Java' 카테고리의 다른 글
Java BigDecimal (0) | 2023.01.26 |
---|---|
Java call by value (0) | 2023.01.26 |
Java 상품 정보 입력 (0) | 2023.01.26 |
Java static 변수 변경 (0) | 2023.01.25 |
Java public (0) | 2023.01.25 |