20.11.28 [005]
문제 - 두 개의 주사위를 던졌을 때 나오는 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5이면 실행을 멈추는 코드를 작성하시오.
public class Hello { public static void main(String[] args) { while(true){ int num1 =(int)(Math.random()*6)+1; int num2 = (int)(Math.random()*6)+1; System.out.println(num1+","+num2); if(num1+num2==5) break; } } }
나의 답 - 오류:무한루프로 실행됨
public class Hello { public static void main(String[] args) { int num1 =(int)(Math.random()*6)+1; int num2 = (int)(Math.random()*6)+1; while(num1+num2==5){ System.out.println(num1+","+num2); break; } if(num1+num2==5) { System.out.println(num1+","+num2); } } }
의문점
public class Hello { public static void main(String[] args) { //이걸 왜 이부분에 넣으면 안되는지? //int num1 =(int)(Math.random()*6)+1; //int num2 = (int)(Math.random()*6)+1; while(true){ //꼭 while안에 true를 넣어야 되는건지!?? int num1 =(int)(Math.random()*6)+1; int num2 = (int)(Math.random()*6)+1; System.out.println(num1+","+num2); if(num1+num2==5) break; } } }
블로그에서 긁어옴
while 문에서 조심해야 할 점은, 카운터로 사용되는 변수의 선언과 초기화의 위치를 유의해야한다. while 안에서 변수의 초기화가 이루어지면 매 반복마다 변수의 값이 해당 값으로 초기화 되어지므로 증가나 감소된 결과를 얻을 수 없다.
내 생각 + 블로그글
★반복문 안에서 변수의 초기화를 하게되면 초기화도 반복된다!! 그래서 while문 안에서 변수의 초기화를 넣어줘어야 원하는 값이 나올때까지 반복한다. 그리고 그 밖에서 초기화를 하게되면 그 조건이 만족할때 무한으로 반복된다.-for문, while문 둘다 해당. (출처 : langand.tistory.com/30)
20.11.28 [005]
문제-1부터5까지 더해라.
public class Practice { public static void main(String[] args) { int sum =0; for(int i = 1;i<=5; i++) sum+=i; System.out.println(sum); } }
나의 답 - 오류 : while문 안에서 후위연산자를 넣어줄때 생기는 오류
public class Hello { public static void main(String[] args) { int num =0; int sum =0; while((num++) <= 5){ //num이 여기서 5까지 나오고 //다음에 빠져나올때 6이 더 추가되어서 6까지 더해진다. System.out.println(num);//여기서 몇까지 출력되는지 알 수 있다. sum+=num; } System.out.println(sum); } }//1~6까지 더해짐
의문점
public class Hello{ public static void main(String[] args){ int x=10; int y=20; int z=(++x)+(--y); //x는 먼저 증가, y는 연산부터 참가. 그 후 감소 System.out.println(z); } } //11+20=31
왜 그런지 블로그에서 긁어옴
for문에서는 전위형이나 후위형 증가값이 의미가 없다. for(a; b; c;) a의 값을 셋팅하고 b의 조건을 비교한 후 내부로직을 실행한 다음 c를 증가 시키기 때문이다.
while문에서도 역시 전위형이나 차이가 있다. // 후위형은 먼저 비교후 값을 증가 시키기 때문에 // 전위형 (1~9), 후위형 (1 ~ 10)이 찍힌다
i++(후위형)과 ++i(전위형)은 단독으로 쓰일때는 동일한 결과값을 같지만, 다른 메서드나 변수와 같이 쓰일 경우 값을 넣어준 후 증가(후위형), 값을 증가 후 넣어줌(전위형)처럼 사용 가능 하다.
20.11.30
return값 있는 메소드에서-
void 가 수정가능한곳, syso있는곳. 파라미터 함수를 한번더 정의해주고 숫자넣어줌.
파라미터있는 함수는 고정임.
public class Hello { public static void main(String[] args) { //매개변수 하나를 받아 원의 넓이를 리턴하는 함수를 작성하시오. //double sum = circle(5.5); //둘중하나 다 가능임. System.out.println(circle(5.5)); } public static double circle(double r) { final double PI = 3.14; return r*r*PI; } }
20.12.02
public class TV { String brand; int year; int inch; public TV(String brand,int year,int inch) { //왜 public void TV는 안되고, this.brand=brand; // public TV나 TV()만 되는지? this.year=year; this.inch=inch; } public void show() { System.out.println(brand+"에서 만든 "+year+"년"+inch+"인치"); } }
public class Hello { public static void main(String[] args) { TV myTV = new TV("LG", 2017, 32); //TV라는 클래스를 만들어라 myTV.show(); } }//LG에서 만든 2017년 32인치
↑의문점 - 왜 public void TV 는 안되는지?
내생각 - show()는 값이 없어서 일단 void. TV는 값은 있으니까 void없앤듯??
public class Prac { public static void main(String[] args) { int math, science, english; math = 90; science = 100; english = 80; Grade me = new Grade(math, science, english); System.out.println("평균은 " + me.average()); } }
package org.opentutorials.javatutorials.method; public class Grade { double math, science, english; public Grade(double math, double science, double english) { this.math = math; this.science = science; this.english = english; } public double average() { //여기에 double형이 바로 들어가는이유는? return (math + science + english) / 3.0; } }//평균은 90.0
↑위에 me.average()값이 출력되는데 빈칸이면서 왜 double형 메소드를 만드는건지??
'코딩 > 수업 정리' 카테고리의 다른 글
20.12.01 Tue [007] (0) | 2020.12.01 |
---|---|
20.11.30 Mon [006] (0) | 2020.11.30 |
20.11.27 Fri [005] (0) | 2020.11.27 |
20.11.26 Thu [004] (0) | 2020.11.26 |
20.11.25 Wed [003] (0) | 2020.11.25 |
댓글