상세 컨텐츠

본문 제목

따옴표 정리

수업 일지/Java

by NayC 2021. 3. 12. 13:31

본문

728x90

  어디에 ''를 붙이고, 어디에는 ""를 붙이고, 숫자, 문자에는 어떻게 구별을 하고... 맨날 헷갈리기만 했던 그 따옴표. 정리가 되었다. 

 

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;

public class Program {

	public static void main(String[] args) throws IOException {

		FileInputStream fis = new FileInputStream ("res/covid19.csv");
		Scanner fscan = new Scanner(fis); 
		
		String line = fscan.nextLine(); // 맨 첫째줄 읽고, 얜 출력 안 써줘서 날리고
		
		int total =0;
		
		while(fscan.hasNextLine()) {
		
			line = fscan.nextLine();
			String[] cols = line.split(","); 	
			total += Integer.parseInt(cols[3]);  
		}
		
		fscan.close();
		fis.close();
	
		System.out.println(total);
			

	}

}

 

cf) 

Interger.parseInt("28"); -> 28로 바꿔줌

Double.parsedDouble("29.34"); -> 29.34로 바꿔줌

 

Q. 나의 질문은 total += Integer.parseInt("cols[3]"); 이 아니라, 왜 따옴표를 떼어줬느냐에 대한거였음

 

 

 

1. 

System.out.write(70);
System.out.flush();

이렇게 하면 값이 F 이렇게 나옴

우리가 원하는 70을 출력하게 하려면, write() 자리에 70에 해당하는 아스키코드를 입력해줘야함

이게 불편해서 나온게 바로 따옴표 개념   

 

한 글자는 ' ' 

두 글자 이상의 문자열은 " "

* 보충 설명 *
write 함수는 '한 글자씩' 읽는거라
System.out.write("70");
System.out.flush();
이라고 하면 오류가 발생함

암기. "문자열 출력은 print 함수를 사용한다. "" 와 함께" 


cf) 저기 위에서는 F로 출력이 됐던 이유는

F의 아스키코드가 70인데, F를 출력하기 위한 아스키코드 70을 잘 넣어줬기 때문
- 따옴표 없이 쓰는건 인간같지않게~ 아스키코드를 다 직적 입력해줬다고 보면 됨

 

-> 진짜 7을 출력하기 위해서는 다음과 같이 입력해줘야함

System.out.write('7');
System.out.flush();

 


2. 

따옴표 개념이 활용되서 출력되는 건 다 문자고, 문자열임. 

7 '7'
이건 숫자 이건 문자값
변수 : int 변수 : char

 


3. 문자열의 등장

1) 숫자 문자열

13은 '1' '3' 이렇게 써줘야할 일이니 -> 큰따옴표가 등장해서 한 번에 처리를 해버린다. "13"  

 

2) 문자 문자열

* 보충 설명 *
문자는 수식 계산 가능
문자열은 수식 계산 불가능 -> 함수 활용



'h'는 문자 -> 수식 계산 가능
"h"는 문자열
"hello"는 당연히 문자열

첨언)
어떻게보면 당연한거다. 
'3' 이렇게는 아스키코드를 '저절로' 컴퓨터가 처리해서 문자 '3'을 보여줬듯

'h'하면 우리 눈에 보이는 건 h이나, 컴퓨터 내에서는 아스키코드가 있을 것이므로 'h'+1은 일도 아니지~

System.out.write('h'+1);
System.out.flush();

-> i가 나온다. 


4. 위 문제의 코드를 다시 들여다보자. 

	while(fscan.hasNextLine()) {
		
		line = fscan.nextLine();
		String[] cols = line.split(","); 	
		total += Integer.parseInt(cols[3]);  
	}
		

total += Integer.parseInt("cols[3]"); 이 되어버리면,

- 우리는 line.split(",")l 한 녀석을 cols라고 이름 붙여주기로 했는데 (참조변수)

-> 갑자기 "cols[3]"이라고 처음 보는 문자값이 등장해서 애를/정수변환 해서 더한 다음에/total에 더해줘....라는게 됨. 

    근데 저 "cols[3]"는 지금 여기 처음 등장한거니까 당연히 에러가 남. 

 

즉, 우리가 약속했던 참조변수를 잘 가지고와야 한다는 점. 

 

*비슷한 예시*

만약 String x = "hi"; 
      String y = x; 면 y도 hi를 가르키는거고, hi는 이름이 2개 생기게된 것
그런데 만약 String y = "x";라면? 
-> 이건 hi를 가르키는게 '당연히' 아님! (우리는 hi를 x라는 이름으로 참조변수화 해주었으니까) 
    이때의 y는 "x"라는 처음 보는 문자의 참조변수가 된 것임. 

 

728x90
반응형

'수업 일지 > Java' 카테고리의 다른 글

추상화 정리 (java)  (0) 2021.04.08
객체지향 정리 (java)  (0) 2021.04.07
숙지를 위한 연습 문제들 (java)  (0) 2021.03.11
변수 정리  (0) 2021.03.08
10일. Java - 파일 읽기 , 비트 연산자  (1) 2021.03.04

관련글 더보기