Java

Java 상품 정보 입력

승모근뭉치 2023. 1. 26. 12:21

프로젝트 내 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 패키지 내 Ex7Object.java

package javabasic;

import java.util.Scanner;

public class Ex7Object {

	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.nextLine();
		// 메모리할당
		shop = new Shop[cnt];

		// 데이타 입력
		for (int i = 0; i < cnt; i = i + 1) {
			// 생성
			shop[i] = new Shop();
			System.out.println("상품명");
			// 버퍼의 엔터 처리
			// sc.nextLine();
			String sang = sc.nextLine();
			shop[i].setSang(sang);

			System.out.println("수량과 단가를 입력하세요");
			// int su=sc.nextInt();
			int su = Integer.parseInt(sc.nextLine());
			// int dan=sc.nextInt();
			int dan = Integer.parseInt(sc.nextLine());

			shop[i].setSu(su);
			shop[i].setDan(dan);
			System.out.println();
		}

		// 출력
		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());
		}
	}

}

Ex7Object.java 에서 수량과 단가를 입력하세요 부분에서는

수량과 단가를 구분하는 구분자를 스페이스바나 다른 것으로 주지 않는다. 구분자는 엔터로 한다. 아니면 오류가 난다.

수량과 단가 사이 구분자를 스페이스바로 주었을 때는 다음과 같은 오류가 난다.

저장할 상품의 갯수를 입력하세요
3
상품명
인형
수량과 단가를 입력하세요
2 1000
Exception in thread "main" java.lang.NumberFormatException: For input string: "2 1000"
	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.Ex7Object.main(Ex7Object.java:33)

구분자를 엔터로 쳤을 때는 다음과 같은 결과가 나온다.

저장할 상품의 갯수를 입력하세요
3
상품명
인형
수량과 단가를 입력하세요
2
1000

상품명
구두
수량과 단가를 입력하세요
1
1000000

상품명
건강식품
수량과 단가를 입력하세요
100
20000

번호	상품명	수량	단가	총금액
1	인형	2	1000	2000
2	구두	1	1000000	1000000
3	건강식품	100	20000	2000000