轉載:JAVA企業面試題精選 Java基礎 21-30
轉載:https://blog.csdn.net/qq_38131668/article/details/75008770
參考答案:
public class Factorial {
public static void main(String[] args) {
long n = 5;
System.out.println(doFactorial(n));
}
public static long doFactorial(long n) {
if (n < 1) {
System.out.printlin("ERROR");
return 0;
} else if (n == 1 || n == 2){
return n;
} else {
return n * doFactorial(n - 1);
}
}
}
1.22.排序都有哪幾種方法?
參考答案:
排序的方法有:插入排序(直接插入排序、希爾排序)、交換排序(氣泡排序、快速排序)、選擇排序(直接選擇排序、堆排序)、歸併排序、分配排序(箱排序、基數排序)。
1.23.寫一個排序演算法,將10個1-100隨機數字進行排序
參考答案:
選擇排序法實現10個1-100隨機數字的排序,程式碼如下所示:
public class SelectSort {
public static void main(String[] args) {
// 定義一個陣列
int[] num = new int[10];
for (int i = 0; i < num.length; i++) {
num[i] = (int)(Math.random() * 100) + 1;
}
// 排序
selectionSort(num);
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
}
// 選擇排序方法
public static void SelectionSort(int[] number) {
for (int i = 0; i < number.length - 1; i++) {
int m = i;
for (int j = i + 1; j < number.length; j++) {
if (number[j] < number[m]) {
m = j;
}
}
if (i != m) {
swap(number, i , m);
}
}
}
// 用於交換陣列中的索引為i、j的元素
private static void swap(int[] number, int i, int j) {
int t;
t = number[i];
number[i] = number[j];
number[j] = t;
}
}
1.24.請用Java語言編寫一個完成氣泡排序演算法的程式
參考答案:
import java.util.Random;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = new int[10];
for (int i = 0; i < arr.length; i++) {
Random ran = new Random();
arr[i] = ran.nextInt(100);
}
System.out.println(Arrays.toString(arr));
// 氣泡排序
System.out.println("--------氣泡排序開始--------")
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j+1]) {
int t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
System.out.println(Arrays.toString(arr));
}
System.out.println("--------氣泡排序結束--------");
System.out.println(Arrays.toString(arr));
}
}
1.25.有一陣列a[1000]存放了1000個數,這1000個數取自1-999,且只有兩個相同的數,剩下的998個數不同,寫一個搜尋演算法找出相同的那個數的值?
參考答案:
import java.util.Arrays;
public class SearchDemo {
/** 被搜尋資料的大小 */
private static final int size = 1000;
public static void main(String[] args) {
int[] data = new int[size];
// 新增測試資料
for (int k = 0; k < data.length; k++) {
data[k] = k + 1;
}
data[999] = 567;
result(data);
}
/**
* 呼叫二分搜尋演算法的方法實現查詢相同元素
* @param data
*/
public static void result(int data[]) {
Arrays.sort(data);
for (int i = 0; i < data.length; i++) {
int target = data[i];
data[i] = 0;
int result = binaryFind(data, target);
if (result != -1) {
System.out.println("相同元素為:" + data[result]);
break;
}
}
}
/**
* 二分搜尋演算法實現
*
* @param data
* 資料集合
* @param target
* 搜尋的資料
* @return 返回找到的資料的位置,返回-1表示沒有找到
*/
public static int binaryFind(int[] data, int target) {
int start = 0;
int end = data.length - 1);
while (start <= end) {
int middleIndex = (start + end) / 2;
if (target == data[middleIndex]) {
return middleIndex;
}
if (target >= data[middleIndex]) {
start = middleIndex + 1;
} else {
end = middleIndex - 1;
}
}
return -1;
}
}
1.26.現有一個32位的整型變數value和一個有32個元素的陣列a[32],要求:1、對value隨機賦值;2、讓陣列a[n]的值等於value”位n”的值,0<=n<=31。舉例:如果value的”位0”(Bit0)=0,那麼a[0]=0;如果value的”位10”(Bit10)=1,那麼a[10]=1。
參考答案:
public class Foo {
public static void main(String[] args) {
// 產生隨機數
int random = (int)(Math.random() * Integer.MAX_VALUE + 1);
// 轉成二進位制字串
String str = Integer.toBinaryString(random);
// 轉成二進位制時最前面的零被省略,補上省略掉的0
if (str.length() < 32) {
for (int j = 0; j <= 32 - str.length(); j++) {
str = "0" + str;
}
}
// 給陣列賦值
int[] a = new int[32];
for (int i = 0; i < str.length(); i++) {
a[i] = Integer.parseInt(String.valueOf(str.charAt(i)));
System.out.println("a[" + i + "]=" + a[i]);
}
}
}
1.27.有1~100共一百個自然數,已隨機放入一個有98個元素的陣列a[98]。要求寫出一個儘量簡單的方案,找出沒有被放入陣列的那2個數,並在螢幕上列印這2個數。注意:程式不用考慮實現自然數隨機放入陣列的過程。
參考答案:
public static void main(String[] args) {
int[] b = new int[]{ ....存入98個隨機的1~100的整數 };
int[] a = new int[100];
for (int t : b) {
a[t-1] = t;
}
for (int t = 0; t < a.length; t++) {
if (a[t] == 0) {
System.out.println(t + 1);
}
}
}
1.28.用1,2,2,3,4,5這六個數字,用Java寫一個main函式,列印出所有不同的排列,如:512234,412345等,要求:”4”不能在第三位,”3”與”5”不能相連
參考答案:
import java.util.ArrayList;
import java.util.List;
public class Q028 {
public static List<String> list = new ArrayList<String>();
public static void group(String str, String nstr) {
if (str.length() != nstr.length()) {
String rest = getRest(str, nstr);
for (int i = 0; i < rest.length(); i++) {
String temp = str + rest.substring(i, i + 1);
if (temp.indexOf("4") != 2 && temp.indexOf("35") == -1 && temp.indexOf("53") == -1) {
if (!list.contains(temp) && temp.length() == nstr.length()) {
list.add(temp);
}
group(temp, nstr);
}
}
}
}
public static String getRest(String str, String nstr) {
String rest = "";
if (nstr.length() > str.length()) {
rest = nstr;
for (int i = 0; i < str.length(); i++) {
// 注意此處的replaceFirst,而不是replaceAll
rest = rest.replaceFirst(str.substring(i, i + 1),"");
}
}
return rest;
}
public static void main(String[] args) {
group("", "122345");
System.out.println(list.toString());
}
}
1.29.編寫一個命令列程式,提示讓使用者輸入2個整數,然後計算這2歌整數之間能被5整除的所有整數的和,並列印顯示
參考答案:
import java.util.Arrays;
import java.util.Scanner;
public class Q029 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] nums = new int[2];
System.out.println("請輸入一個整數:");
nums[0] = scan.nextInt();
System.out.println("請輸入第二個整數:");
nums[1] = scan.nextInt();
Arrays.sort(nums);
int sum = 0;
for (int begin = nums[0] + 1; begin < nums[1]; begin++) {
if (begin % 5 == 0) {
sum += begin;
}
}
System.out.println(sum);
}
}
1.30.編寫一個命令列程式,提示讓使用者輸入使用者名稱和密碼。如果使用者名稱和密碼都是admin,則顯示登入成功;如果不是則顯示登入失敗,讓使用者重新輸入。如果使用者連續3次認證失敗,則鎖定終止程式
參考答案:
import java.util.Scanner;
public class Q030 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = 0;
while (true) {
System.out.println("請輸入賬號:");
String name = scan.nextLine();
System.out.println("請輸入密碼:");
String pwd = scan.nextLine();
if ("admin".equals(name) && "admin".equals(pwd)) {
System.out.println("登入成功");
break;
} else {
count++;
if (count < 3) {
System.out.println("登入失敗,請重新輸入。");
} else {
System.out.println("登入次數過多,認證失敗");
break;
}
}
}
}
}
相關文章
- 轉載:JAVA企業面試題精選 Java基礎 41-50Java面試題
- 轉載:JAVA企業面試題精選 Java基礎 31-40Java面試題
- 轉載:JAVA企業面試題精選 Java基礎 1-10Java面試題
- 轉載:JAVA企業面試題精選 Java基礎 11-20Java面試題
- 轉載:JAVA企業面試題精選 OOP 1-10Java面試題OOP
- 轉載:JAVA企業面試題精選 OOP 11-20Java面試題OOP
- 轉載:JAVA企業面試題精選 OOP 21-24Java面試題OOP
- 轉載:JAVA企業面試題精選 資料庫1-10Java面試題資料庫
- 轉載: JAVA企業面試題精選 資料庫11-20Java面試題資料庫
- JAVA企業面試題精選 MyBatis 1-4Java面試題MyBatis
- Java併發面試題精選Java面試題
- java基礎面試題Java面試題
- 最新精選Java面試題,附答案!Java面試題
- java面試題--基礎上Java面試題
- Java基礎面試題下Java面試題
- Java面試題-基礎篇四Java面試題
- Java面試題-基礎篇五Java面試題
- Java面試題-基礎篇一Java面試題
- Java面試題-基礎篇二Java面試題
- JavaSE-Java基礎面試題Java面試題
- 面試題之:java基礎1面試題Java
- Java基礎知識面試題Java面試題
- Java面試題基礎篇(一)Java面試題
- Java面試題基礎篇(二)Java面試題
- Java面試題基礎篇(三)Java面試題
- 【Java面試】Java面試題基礎系列212道(上)Java面試題
- Java面試題總結之Java基礎(三)Java面試題
- Java面試系列:Java面試題基礎系列228道(上)Java面試題
- 面試題收集——Java基礎部分(一)面試題Java
- Java面試之基礎題---物件ObjectJava面試物件Object
- 一道java面試基礎題Java面試
- java基礎:面試題【不斷更新】Java面試題
- Java基礎慨念面試題1Java面試題
- 2021精選 Java面試題附答案(一)Java面試題
- 精選30道Java多執行緒面試題Java執行緒面試題
- Java面試之Java基礎問題答案口述整理Java面試
- Java基礎面試題整理-50題(附答案)Java面試題
- Python企業面試題2 —— 基礎篇Python面試題