Lab2

Lab2 – ImageConverterTest (Due by 4/2)
Lab2 프로젝트 디렉토리 안에 모든 파일(src/*.java & bin/*.class)와 보고서(3-4장정도 – 장수제한없음)를 넣고 Lab2_학번_이름.zip
압축한 후 e-learning(http://lms.dankook.ac.kr/index.jsp)으로 제출

0 – image convert
1 – command line arguments (inputFile, outputFile, format)
2 – for/foreach
3 – if/else, switch, constant
4 – while/do-while, Scanner 클래스를 이용하여 사용자 입력받아서 image convert한다.
5 – 본인이 원하는 코드를 추가작성한다. – 예를 들어, image resize
1,2,3,4,5에 해당하는 부분을 /* 주석문 */으로 표시해준다.


// converts an image to another format
public static boolean convert(String inputImageFile, String outputImageFile, String format) {
    boolean result = false;;
    BufferedImage image = null;
    try {
        // reads input image from file
        image = ImageIO.read(new File(inputImageFile));
        // writes to the output image in specified format
        result = ImageIO.write(image, format, new File(outputImageFile));
        // prints the result
        if (result) {
            System.out.println(inputImageFile + " Image converted to " + outputImageFile + " successfully.");
        } else {
            System.out.println("Could not convert image.");
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return result;
}

public static void print(String imageFilename) {
    // reads the image
    BufferedImage image = null;
    try {
        image = ImageIO.read(new File(imageFilename));
        int width = image.getWidth();
        int height = image.getHeight();
        String ext = imageFilename.substring(imageFilename.lastIndexOf('.')+1);
        // prints the image information
        System.out.println("filename=" + imageFilename);
        System.out.println("width=" + width);
        System.out.println("height=" + height);
        System.out.println("format=" + ext);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Command-Line Arguments (C vs Java)


/* command line arguments in C */
void main(int argc, char** argv)
{
    char name[128]; 
    int age = 0; 
    if (argc >= 2) { 
        strcpy(name, argv[1]); 
        age = atoi(argv[2]); 
        printf("%s, name = %s, age = %d\n", argv[0], name, age); 
    } 
}

~>person.exe Park 20

argv[0] = “person.exe”

argv[1] = “Park”

argv[2] = “20”

 


// command line arguments in java
public class Person {
    public static void main(String[] args) {
        String name = ""; 
        int age = 0; 
        if (args.length >= 2) { 
            name = args[0]; 
            age = Integer.parseInt(args[1]); 
            System.out.printf("name = %s, age = %d\n", name, age); 
        } 
    }
}

~>java Person Park 30

args[0] = “Park”

args[1] = “30”

 

HW Grading

보고서, 소스코드, 프로젝트 파일 폴더 전체가 없음 -7

소스코드 컴파일 에러 -7
코드 실행 에러 및 잘못된 결과 -1
소스 코드에 주석 없음 -1
Your Code 없음 -1
소스코드 첫부분에 Lab이름, 날짜, 본인이름 적을것

보고서표지에 Lab번호, 분반번호, 제출일, 학번, 이름을 적을것
보고서 제출안함 -3
보고서에 내용을 작성하지 않고 소스코드 사진캡쳐해서 붙여넣기 -3
보고서에 소스코드 내용을 작성하지 않고 다른 것 적기 -3
보고서에 Your Code 설명 없음 -1
보고서에 실행결과창 없음 -1

Control Statement

import java.util.Scanner;

// for, foreach, if/else-if, switch, array, 2D array
public class BasicCalculation {

    public static Scanner scan = new Scanner(System.in);

    // calc (using if/else-if)
    public static int calc(int x, int y, char op) {
        if (op == '+') return x + y;
        else if (op == '-') return x - y;
        else if (op == '*') return x * y;
        else if (op == '/') return x / y;
        else {
            System.out.println("op not found");
            return 0;
        }
    }

    // calc2 (using switch)
    public static int calc2(int x, int y, char op) {
        switch(op) {
            case '+': return x + y;
            case '-': return x - y;
            case '*': return x * y;
            case '/': return x / y;
            default:
                System.out.println("op not found");
                return 0;
        }
    }

    // get user input op[+,-,*,/]
    static public char getUserInputOp() {
        char value = '\0';
        do {
            System.out.printf("Please enter the operator [+,-,*,/]: ");
            try {
                value = scan.next().charAt(0);
                System.out.println("value=" + value);
            }
            catch (Exception e) {
                System.out.printf("Error! Please re-enter!\n");
                scan.next();
                continue;
            }
        } while (value != '+' && value != '-' && value != '*' && value != '/');
        return value;
    }

    public static void main(String[] args) {
        // for
        for (int i = 0; i < 5; i++) {
            System.out.println("i=" + i);
        }
        // while
        int j = 0;
        while (j < 5) {
            System.out.println("j=" + j);
            j++;
        }
        // do-while
        int k = 0;
        do {
            System.out.println("k=" + k);
            k++;
        } while (k < 5);
        // break (0~4)
        int x = 0;
        while (true) {
            if (x >= 5) break;
            System.out.println("x=" + x);
            x++;
        }
        // continue (0~4)
        int y = 0;
        while (y < 5) {
            y++; // (1~5)
            if (y % 2 == 1) // 홀수
                continue;
            System.out.println("y=" + y); // 짝수만 출력
        }
        // for-each
        System.out.print("Please enter two numbers: ");
        x = scan.nextInt();
        y = scan.nextInt();
        char[] ops = {'+', '-', '*', '/', '^'}; // char array
        for (char op : ops) {
            int z = calc(x, y, op);
            System.out.printf("z = %d %s %d = %d\n", x, op, y, z);
        }
        // 2D array
        int[][] numbers = {{49, 57}, {36, 29}, {88, 66}};
        for (char op: ops) {
            for (int i = 0; i < numbers.length; i++) {
               int r = calc2(numbers[i][0], numbers[i][1], op);
               System.out.printf("r = %d %c %d = %d\n", 
                       numbers[i][0], op, numbers[i][1], r);
            }
        }
        // user input
        System.out.print("Please enter two numbers: ");
        x = scan.nextInt();
        y = scan.nextInt();
        char op = getUserInputOp();
        int w = calc2(x, y, op);
        System.out.printf("w = %d %s %d = %d\n", x, op, y, w)
    }
}

Scanner


public String next() // 다음 입력을 받음
public String nextLine() // 다음 라인을 입력 받음
public byte nextByte() // 다음 입력을 byte로 받음
public short nextShort() // 다음 입력을 short로 받음
public int nextInt() // 다음 입력을 int로 받음
public long nextLong() // 다음 입력을 long로 받음
public float nextFloat() // 다음 입력을 float로 받음
public double nextDouble() // 다음 입력을 double로 받음

Lab1

Lab1 – ImageTest

Lab1 프로젝트 디렉토리 안에 모든 파일(src/*.java & bin/*.class)와 보고서(3-4장정도 – 장수제한없음)를 넣고 Lab1_학번_이름.zip 압축한 후 e-learning(http://lms.dankook.ac.kr/index.jsp)으로 제출

0 – Java Tutorials Lesson : Working with Images

1 – command line arguments

2 – method

3 – Scanner 클래스를 이용하여 사용자에게 이미지파일을 입력받아서 이미지 정보를 출력한다.

4 – 본인이 원하는 코드를 추가작성한다

1,2,3,4에 해당하는 부분을 /* 주석문 */으로 표시해준다.

 

BufferedImage image = null
try {

// reads the image
image = ImageIO.read(new File(filename));
// prints the image width, height, extension(format)
int width = image.getWidth();
int height = image.getHeight();
String ext = filename.substring(filename.lastIndexOf(‘.’) + 1);
System.out.println(“filename=” + filename);
System.out.println(“width=” + width);
System.out.println(“height=” + height);
System.out.println(“format=” + ext);

} catch (IOException e) {

e.printStackTrace();

}