어디에 ''를 붙이고, 어디에는 ""를 붙이고, 숫자, 문자에는 어떻게 구별을 하고... 맨날 헷갈리기만 했던 그 따옴표. 정리가 되었다.
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"라는 처음 보는 문자의 참조변수가 된 것임. |
추상화 정리 (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 |