์ฝ๋ฉ ์ฐ์ต 4
public class WeatherAdviser {
public String provideWeatherAdvisory(int temperature) {
// TODO: Provide a weather advisory message based on the temperature.
if (temperature < 0) {
return "It's freezing! Wear a heavy coat.";
} else if (temperature >= 0 && temperature <= 10) {
return "It's cold! Bundle up.";
} else if (temperature >= 11 && temperature <= 20) {
return "It's cool! A light jacket will do.";
} else {
return "It's warm! Enjoy the day.";
}
}
}
if์์ return ๊ตฌ๋ฌธ์ด ์๋ค๋ฉด, else if๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
→ ์ด์ฐจํผ else if๋ฌธ์ผ๋ก ๋ค์ด๊ฐ๋ค๋๊ฒ์ if์ return ๊ตฌ๋ฌธ์ด ๋์ํ์ง ์์๋ค๋๊ฒ
public class WeatherAdviser {
public String provideWeatherAdvisory(int temperature) {
// TODO: Provide a weather advisory message based on the temperature.
if (temperature < 0) {
return "It's freezing! Wear a heavy coat.";
}
if (temperature <= 10) {
return "It's cold! Bundle up.";
}
if (temperature <= 20) {
return "It's cool! A light jacket will do.";
}
return "It's warm! Enjoy the day.";
}
}
์ฝ๋ฉ ์์ : char๋ฅผ ์ด์ฉํ switch๋ฌธ – ๋ชจ์์ผ๊น์? ์๋๊น์?
public class MyChar {
// Method to determine if a character is a vowel
public boolean isVowel(char ch) {
// Use a switch statement to check for each vowel, both lowercase and uppercase
switch (ch) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': return true;
default: return false;
// TODO: Complete the switch statement
}
}
}
switch (ch) {
case 'a','e','i','o','u':
case 'A','E','I','O','U': return true;
default: return false;
fall through์ ์ํด ์ด๋ ๊ฒ ์์ฑํ๋ฉด ๋๋ค!
for๋ฌธ ์ฐ์ต
์ฝ์ ํฉ ๊ตฌํ๊ธฐ
public int sumOfDivisors(){
//6=2+3
int sum=0;
for(int i=2;i<=number-1;i++){
if(number%i===0){ //์ฝ์๋ผ๋ฉด
sum+=i;
}
}
return sum;
}
public void printNumberTriangle() {
//1
//1 2
//1 2 3
//1 2 3 4
//1 2 3 4 5
for(int i=1;i<=number;i++) {
for(int j=1;j<=i;j++) {
System.out.print(j+' ');
}
System.out.println();
}
}
์ด์ค for๋ฌธ์ ์ด์ฉํด, ๊ฐ ์ซ์๋ฅผ ์ถ๋ ฅํ๋ค.
for ๋ฃจํ:
- ๋ฏธ๋ฆฌ ๋ฐ๋ณต ํ์๋ฅผ ์๊ณ ์์ ๋ ์ฌ์ฉ
while ๋ฃจํ:
- ๋ฐ๋ณต์ ๊ณ์ํ ์ง ์ฌ๋ถ๋ฅผ ์กฐ๊ฑด์ผ๋ก ํ์ธํด์ผ ํ ๋ ์ฌ์ฉ
- ๋ฐ๋ณต ํ์๋ฅผ ๋ช ํํ ์ ์ ์๋ ๊ฒฝ์ฐ์ ์ ์ฉ
do-while ๋ฃจํ:
- do-while ๋ฃจํ๋ while ๋ฃจํ์ ์ ์ฌํ์ง๋ง, ๋ฃจํ ๋ด ์ฝ๋๋ฅผ ์ต์ ํ ๋ฒ ์คํํ ํ ์กฐ๊ฑด์ ๊ฒ์ฌ-> ์ฝ๋๋ฅผ ์ต์ ํ ๋ฒ ์คํํด์ผ ํ ๋ ์ฌ์ฉ
์ฝ๋ฉ ์ฐ์ต 5
์ฝ๋ฉ ์์ : ์ด๋ค ์์ ํฉํ ๋ฆฌ์ผ ๊ณ์ฐํ๊ธฐ
public class FactorialCalculator {
public int calculateFactorial(int number) {
if(number<0) {
return -1
}
int factorial=1;
for(int i=2;i<=number;i++){
factorial*=i;
}
return factorial;
}
}
์ฝ๋ฉ ์์ : ์ซ์์ ๋ง์ง๋ง ์๋ฆฟ์ ๊ตฌํ๊ธฐ
public class NumberUtils {
public int getLastDigit(int number) {
// Write your code here
if (number < 0) {
return -1;
}
return number % 10;
}
}
์ฝ๋ฉ ์์ : ์ซ์์ ์๋ฆฟ์ ๊ตฌํ๊ธฐ
public class NumberUtils {
public int getNumberOfDigitsa(int number) {
// Write your code here
if(number<0){
return -1;
}
if(number==0){
return 1;
}
//12345>1234>123>12>1>0
int count=0;
while(number>0){
number/=10;
count++;
}
return count;
}
}
์ฝ๋ฉ ์์ : ์ซ์์ ์๋ฆฟ์ ํฉ๊ณ ๊ณ์ฐํ๊ธฐ
public class NumberUtils {
public int getSumOfDigits(int number) {
// Write your code here
if(number<0){
return -1;
}
if(number==0){
return 0;
}
//1234>4>3>2>1>0
int sum=0;
while(number>0){
sum+=number%10;
number=number/10;
}
return sum;
}
}
์ฝ๋ฉ ์์ : ์ซ์ ์ญ์์ผ๋ก ๋ง๋ค๊ธฐ
public class NumberUtils {
public int reverseNumber(int number) {
// TODO: Write your code here
if(number<0){
return -1;
}
if(number==0){
return 0;
}
int result=0;
//10์ ๋๋๊ณ 10์ ๋ค์ ๊ณฑํ๋ค. 456=654
while(number>0){
result=result*10+(number%10); //result=654
number=number/10;
}
return result;
}
}
์ฝ๋ฉ ์์ : ์ด๋ค ์์ ์ต์๊ณต๋ฐฐ์(LCM)
๊ณตํต๋ ๋ฐฐ์ ์ค ๊ฐ์ฅ ์์์๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ์, ๋ ํฐ์๋ฅผ ์ฐพ๊ณ ๊ทธ ์๋ฅผ ๊ณฑํด๊ฐ๋ฉฐ, ๋ค๋ฅธ ์์์๋ก ๋๋ ์ง๋์ง๋ฅผ ํ๋ณํ๋ฉด๋๋ค.
public class BiNumber {
private int number1;
private int number2;
public BiNumber(int number1, int number2) {
this.number1 = number1;
this.number2 = number2;
}
/**
* Getter for the first number.
* @return the first number.
*/
public int getNumber1() {
return number1;
}
/**
* Getter for the second number.
* @return the second number.
*/
public int getNumber2() {
return number2;
}
/**
* Calculates and returns the least common multiple (LCM) of the two numbers.
* If either number is negative, returns -1 as the LCM for negative numbers is undefined.
* If either number is zero, returns 0 as the LCM of 0 and any other number is 0.
* @return LCM of the two numbers, or -1 if either number is negative, or 0 if either number is zero.
*/
public int calculateLCM() {
// TODO: Write your code here
if(number1<0||number2<0){
return -1;
}
if(number1==0||number2==0){
return 0;
}
int max=Math.max(number1,number2);
int lcm=max;
while(true){
boolean isLcm=lcm%number1==0 && lcm%number2==0;
if(isLcm){
return lcm;
}
lcm+=max; //์ด์ฐจํผ ๊ณตํต
}
}
}
์ฝ๋ฉ ์์ : ์ด๋ค ์์ ์ต๋๊ณต์ฝ์(GCD)
public class BiNumber {
private int number1;
private int number2;
public int getNumber1() {
return number1;
}
public int getNumber2() {
return number2;
}
public int calculateGCD() {
// Write your code here
if(number1<0||number2<0){
return 1;
}
if(number1==0||number2==0){
return 0;
}
if(number1==number2){
return number1;
}
int min=Math.min(number1,number2);
for(int i=min;i>0;i--){
if(number1%i==0 && number2%i==0){
return i;
}
}
return -1;
}
}
}
์ฐธ์กฐ๋ณ์
๐๐ป Heap: Location+object
๐๐ป Stack: Location+Value+variable-name
int i=5;
Animal dog = new Animal(12);
Animal cat = new Animal(15);
Animal ref=cat; //cat๊ณผ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ์ง
Animal dog2 = new Animal(12); //dog์ ๋ค๋ฅธ ref์ฃผ์๋ฅผ ๊ฐ์ง
cat==dog; //false
cat==ref; //true
dog==dog2; //false
๋ณ์ i, dog๋ผ๋ ์ธ์คํด์ค๋ Stack์ ์ ์ฅ๋๋๋ฐ , ์ด๋ dog์ ๋ํ ๊ฐ์๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ๊ฒฝ๋ก์ ์ฐธ์กฐ ์ ๋ณด (location=1=์ฐธ์กฐ๋ณ์)๊ฐ ๊ฐ์ด ์ ์ฅ๋๋ค.
Animal nothing; //ref์ฃผ์=null
nothing=cat; //cat์ ref์ฃผ์๊ฐ copy
์ฐธ์กฐ๋ณ์์ ==์ ๊ฐ์ฒด๊ฐ ๊ฐ์์ง๋ฅผ ๋น๊ตํ๋ค. (ref์ฃผ์)
nothing.id=10;
cat.id๋ 10์ด ๋๋ค. nothing์ด ๊ฐ๋ฆฌํค๋ 1C์ ์๋ ๊ฐ์ด ๋ณ๊ฒฝ๋์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์
โญ๏ธ ์ฐธ์กฐ๋ณ์๋ฅผ ๋ณต์ฌํ ๋, ๋ณต์ฌ๋๊ฒ์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋ ๊ฒฝ๋ก์ด๋ค!
→ ๋ณต์ฌํ(nothing)์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์๋ณธ์ธ(cat)์ ๊ฐ๊น์ง ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ → mutable
int j=i; //j=5
j=6; //j=6, i=5
์์ํ์ธ ๋ณ์๋ copyํด๋, ์๋ณธ์ i๊ฐ์ ๋ณ๊ฒฝ๋์ง ์๋๋ค → immutable (๊ฐ์ copyํ๊ธฐ ๋๋ฌธ)!