国美电器Java笔试题解析

1. 引言

在国美电器的Java笔试题中,我们将通过一系列的问题来探讨Java编程的一些基本概念和技巧。这些问题将涉及到Java语言的基本语法、面向对象编程、异常处理等方面。通过解析这些问题,我们能更好地理解Java编程的核心概念和应用场景。

2. 题目解析

2.1 问题一:字符串反转

首先,让我们来解决问题一:给定一个字符串,实现字符串反转。我们可以通过以下代码来实现:

public class StringReverse {
    public static String reverse(String s) {
        String reversed = "";
        for (int i = s.length() - 1; i >= 0; i--) {
            reversed += s.charAt(i);
        }
        return reversed;
    }
    
    public static void main(String[] args) {
        String s = "Hello, World!";
        String reversed = reverse(s);
        System.out.println(reversed);
    }
}

在上述代码中,我们定义了一个静态方法reverse,该方法接受一个字符串作为参数,并返回反转后的字符串。在方法内部,我们使用一个for循环来遍历输入字符串中的每个字符,并将其逐个添加到一个新的字符串reversed中。最后,我们返回反转后的字符串。

main方法中,我们定义了一个字符串s,并调用reverse方法将其反转。然后,我们将反转后的字符串打印到控制台。

2.2 问题二:求质数

接下来,让我们来解决问题二:给定一个整数n,输出小于等于n的所有质数。我们可以使用如下代码来实现:

public class PrimeNumber {
    public static boolean isPrime(int n) {
        if (n <= 1) {
            return false;
        }
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
    
    public static void printPrimes(int n) {
        for (int i = 2; i <= n; i++) {
            if (isPrime(i)) {
                System.out.print(i + " ");
            }
        }
    }
    
    public static void main(String[] args) {
        int n = 20;
        printPrimes(n);
    }
}

在上述代码中,我们定义了一个静态方法isPrime,该方法接受一个整数作为参数,并判断该整数是否为质数。如果是质数,则返回true,否则返回false

isPrime方法内部,我们首先判断输入的整数是否小于等于1,如果是,则直接返回false,因为质数定义为大于1的自然数。然后,我们使用一个for循环从2开始遍历到输入的整数的平方根,如果输入的整数能被任何一个小于它本身的数整除,则该整数不是质数,返回false。如果循环结束后都没有找到能整除的数,那么该整数就是质数,返回true

接下来,我们定义了一个静态方法printPrimes,该方法接受一个整数作为参数,并输出小于等于该整数的所有质数。在方法内部,我们使用一个for循环从2开始遍历到输入的整数,对每个整数调用isPrime方法进行判断,如果是质数,则将其输出到控制台。

main方法中,我们定义了一个整数n,并调用printPrimes方法将小于等于n的所有质数输出。

2.3 问题三:文件拷贝

最后,让我们来解决问题三:实现一个文件拷贝程序。我们可以使用如下代码来实现:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy {
    public static void copy(String src, String dest) throws IOException {
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = new FileInputStream(src);
            out = new FileOutputStream(dest);
            byte[] buffer = new byte[1024