package start_java;
public class Hello {
public static void main(String[] args) {
int i=1, sum=0;
while(i<=100) {
sum += i;
i++;
}
System.out.print(sum);
}
}
package start_java;
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
long digit=1, sum=0;
while(n!=0) {
sum += n%2 * digit;
n /= 2;
digit *= 10;
}
System.out.print(sum+"(2)");
scanner.close();
}
}
문법 자체는 c++과 많이 다르지 않은 것 같다.package start_java;
public class Hello {
public static void main(String[] args) {
int[] array = {1, 5, 3, 8, 2};
int max = 0;
for(int i=0; i<5; i++) {
max = ((max < array[i]) ? array[i] : max);
}
System.out.print(max);
}
}
삼항연산자를 써서 풀어봤다.void Function(char param1, int param2, double param3=9.8);#1
// student.java
package QW;
public class Student {
String department = "소프트웨어학부";
String gender = "female";
int studentId = 21;
Student(){
}
}
// test.java
package QW;
public class Test {
public static void main(String[] args) {
Student student = new Student();
System.out.println(student.department);
System.out.println(student.studentId);
System.out.println(student.gender);
}
}
#2
//test.java
package QW;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
String department, gender;
int studentId;
Scanner sc = new Scanner(System.in);
System.out.println("학부: ");
department = sc.next();
System.out.println("학번: ");
studentId = sc.nextInt();
System.out.println("성별: ");
gender = sc.next();
Student student = new Student(department, studentId, gender);
System.out.println(student.department);
System.out.println(student.studentId);
System.out.println(student.gender);
}
}
//student.java
package QW;
public class Student {
String department, gender;
int studentId;
Student(String department, int studentId, String gender){
this.department = department;
this.gender = gender;
this.studentId = studentId;
}
}
실습 - 다용도 계산기 구현 <필수> - 사칙연산이 가능해야 한다. - 3.14의 값을 갖는 pi를 정적 변수로 선언한다. - 나눗셈의 매개 변수는 int, double 두 개로 선언한다. - 계산기 변수가 몇 번 만들어졌는지 확인할 수 있는 정적 필드 calculatorSetCount를 만들어야 한다. (계산기가 생성될 때마다 setCount의 숫자를 증가시킨다.) <Calculator class> - 사칙연산 메소드 - 정적 필드 pi - circleArea 메소드 : 원의 넓이를 구하는 메소드. pi를 사용해야 한다. 반지름을 하나 입력받는다. 매개 변수의 타입은 int로 한다. <TestMain class> - 계산기 변수를 선언하고 덧셈, 나눗셈을 수행한 후 값을 출력한다. - 새로운 계산기 변수를 선언하고 원의 넓이를 계산하고 출력한다. - calculatorSetCount를 출력한다.
//Calculator.java
package practice;
public class Calculator {
static final double PI = 3.14;
static int calculatorSetCount = 0;
Calculator(){
calculatorSetCount++;
}
int addition(int x, int y) {
int result = x+y;
return result;
}
int subtraction(int x, int y) {
int result = x-y;
return result;
}
int multiplication(int x, int y) {
int result = x*y;
return result;
}
int division(int x, int y) {
int result = x/y;
return result;
}
double division(double x, double y) {
double result = x/y;
return result;
}
double circleArea(int x) {
double result = PI*x*x;
return result;
}
}
//TestMain.java
package practice;
import java.util.Scanner;
public class TestMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Calculator cal_1 = new Calculator();
int additionInt = cal_1.addition(10, 20);
System.out.println(additionInt);
int divisionInt = cal_1.division(30, 20);
System.out.println(divisionInt);
double divisionDouble = cal_1.division(5.0, 2.3);
System.out.println(divisionDouble);
Calculator cal_2 = new Calculator();
System.out.println("반지름을 입력하세요: ");
int radius = sc.nextInt();
double circleArea = cal_2.circleArea(radius);
System.out.println(circleArea);
System.out.println(Calculator.calculatorSetCount);
}
}
Calculator.calculatorSetCount+=1;으로 calculatorSetCount에 접근이 가능한 것 같아서 별로이다. 이런 코드보단, private static int calculatorSetCount = 0;으로 calculatorSetCount에 접근이 불가능하도록 해놓고, static int getCalculatorSetCount() {
return calculatorSetCount;
}
같은 형식으로 getter 함수를 만들어주는 게 더 명확한 것 같다. 그리고 다음부턴 매소드나 필드 모두에 private이든 public이든 써주어야 헷갈리지 않을 것 같다. 그러기 위해선 접근 지정자에 대해 더 공부해야할 것 같은데, 이것도 시험 끝나면 한번 정리해봐야겠다.
Fruit 클래스를 상속받는 Apple 클래스를 만들어보자! <Fruit class> - String name, String color, String flavor - 생성자는 같은 패키지와 자식에서만 쓸 수 있도록 선언 - 생성자의 입력은 name, color, flavor 3개가 동시에 들어온다. - name, color, flavor를 출력하는 메소드 print를 선언 - 메소드는 public으로 선언 <Apple class> - color는 red로 고정 - print를 오버라이딩해서 color가 red인 경우 This is Apple을 출력하도록 할 것. 그 이외에는 Fruit의 print를 호출할 것 <Test class> - Fruit을 선언하고, 임의의 값 (name, color, flavor 3개를 넣을 것, 단 color는 red가 아닌 다른 값을 넣는다) 을 넣어 초기화한다. - Apple을 선언하고, 임의의 값 (color 제외하고 2개를 넣을 것)을 넣어 초기화한다. - 각각 Fruit 과 Apple의 print를 호출한다.수업 당시 실습 전에 강의실을 나와버려서 코드 확인은 받지 못했다.
public class Apple extends Fruit{
private String color = "red";
public Apple(String name, String flavor){
super(name, this.color, flavor);
}
처음 Fruit 클래스의 코드를 이렇게 썼을 때 "Cannot refer to 'this' nor 'super' while explicitly invoking a constructor"
public class Apple extends Fruit{
private String color = "red";
public Apple(String name, String flavor){
String color = this.color;
super(name, color, flavor);
}
같은 형태도 불가능하다.
그래서 public class Apple extends Fruit{
public Apple(String name, String flavor){
super(name, "red", flavor);
}
로 일단 짜긴 했는데 더 좋은 방법이 있을지 궁금하다. 이건 좀 난잡한 코드인 것 같다.