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 |
댓글