Skip to content

Commit 58ba10c

Browse files
authored
Merge pull request onlyliuxin#25 from RalfNick/master
Ralf
2 parents 2a8c743 + a909aad commit 58ba10c

File tree

9 files changed

+581
-1
lines changed

9 files changed

+581
-1
lines changed

group20/925290009/第一次作业/MyTreeNode.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package BasicData;
22

3-
//insert ·½·¨ÓÐÎÊÌâ
3+
//insert 方法有问题
44
public class MyTreeNode<T extends Comparable<T>> {
55

66
private T data;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,213 @@
1+
package org.Ralf.ArrayUtil;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
6+
import javax.naming.spi.DirStateFactory.Result;
7+
8+
public class ArrayUtil {
9+
10+
public static void reverseArray(int[] origin) {
11+
/**
12+
* 给定一个整形数组a , 对该数组的值进行置换 例如: a = [7, 9 , 30, 3] , 置换后为 [3, 30, 9,7] 如果
13+
* a = [7, 9, 30, 3, 4] , 置换后为 [4,3, 30 , 9,7]
14+
*
15+
* @param origin
16+
* @return
17+
*
18+
*/
19+
20+
for (int i = 0; i < origin.length / 2; i++) {
21+
int temp = origin[i];
22+
origin[i] = origin[origin.length - i - 1];
23+
origin[origin.length - i - 1] = temp;
24+
}
25+
26+
}
27+
28+
/**
29+
* 现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
30+
* 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: {1,3,4,5,6,6,5,4,7,6,7,5}
31+
*
32+
* @param oldArray
33+
* @return int[]
34+
*/
35+
public static int[] removeZero(int[] oldArr) {
36+
37+
if (oldArr == null) {
38+
return null;
39+
}
40+
int[] newArr = new int[oldArr.length];
41+
int size = 0;
42+
43+
for (int i = 0; i < oldArr.length; i++) {
44+
if (oldArr[i] != 0) {
45+
newArr[size] = oldArr[i];
46+
size++;
47+
}
48+
}
49+
return Arrays.copyOf(newArr, size);
50+
51+
}
52+
53+
/**
54+
* 给定两个已经排序好的整形数组, a1和a2 , 创建一个新的数组a3, 使得a3 包含a1和a2 的所有元素, 并且仍然是有序的 例如 a1 =
55+
* [3, 5, 7,8] a2 = [4, 5, 6,7] 则 a3 为[3,4,5,6,7,8] , 注意: 已经消除了重复
56+
*
57+
* @param array1
58+
* @param array2
59+
* @return
60+
*/
61+
62+
public static int[] merge(int[] array1, int[] array2) {
63+
64+
// method
65+
ArrayList<Integer> arrayList = new ArrayList<>();
66+
for (int i = 0; i < array1.length; i++) {
67+
if (!arrayList.contains(array1[i])) {
68+
arrayList.add(array1[i]);
69+
}
70+
}
71+
for (int i = 0; i < array2.length; i++) {
72+
if (!arrayList.contains(array2[i])) {// 可用list的index找到索引,根据索引判断是否包含该元素
73+
arrayList.add(array2[i]);
74+
}
75+
}
76+
int[] newArr = new int[arrayList.size()];
77+
// arrayList.toArray(newArr);
78+
for (int i = 0; i < arrayList.size(); i++) {
79+
newArr[i] = arrayList.get(i);
80+
}
81+
Arrays.sort(newArr);// 可用冒泡排序,插入排序,快速排序法等实现
82+
return newArr;
83+
}
84+
85+
/**
86+
* 把一个已经存满数据的数组 oldArray的容量进行扩展, 扩展后的新数据大小为oldArray.length + size
87+
* 注意,老数组的元素在新数组中需要保持 例如 oldArray = [2,3,6] , size = 3,则返回的新数组为
88+
* [2,3,6,0,0,0]
89+
*
90+
* @param oldArray
91+
* @param size
92+
* @return
93+
*/
94+
public static int[] grow(int[] oldArray, int size) {
95+
int[] newArray = new int[oldArray.length + size];
96+
for (int i = 0; i < oldArray.length; i++) {
97+
newArray[i] = oldArray[i];
98+
}
99+
return newArray;
100+
}
101+
102+
/**
103+
* 斐波那契数列为:1,1,2,3,5,8,13,21...... ,给定一个最大值, 返回小于该值的数列 例如, max = 15 ,
104+
* 则返回的数组应该为 [1,1,2,3,5,8,13] max = 1, 则返回空数组 []
105+
*
106+
* @param max
107+
* @return
108+
*/
109+
public static int[] fibonacci(int max) {
110+
int[] newArray = {};
111+
if (max == 1) {
112+
return newArray;
113+
}
114+
newArray = new int[2 * max];
115+
int size = 0;
116+
int a = 1;
117+
int b = 1;
118+
newArray[size++] = a;
119+
newArray[size++] = b;
120+
while (b <= max) {
121+
int temp = b;
122+
b = a + b;
123+
newArray[size++] = b;
124+
a = temp;
125+
}
126+
127+
return Arrays.copyOf(newArray, size - 1);
128+
}
129+
130+
/**
131+
* 返回小于给定最大值max的所有素数数组 例如max = 23, 返回的数组为[2,3,5,7,11,13,17,19]
132+
*
133+
* @param max
134+
* @return
135+
*/
136+
public static int[] getPrimes(int max) {
137+
if (max < 2) {
138+
return null;
139+
}
140+
int[] aar = new int[max];
141+
int size = 0;
142+
for (int i = 2; i < max; i++) {
143+
if (isPrime(i)) {
144+
aar[size++] = i;
145+
}
146+
}
147+
return Arrays.copyOf(aar, size);
148+
}
149+
150+
private static boolean isPrime(int aar) {
151+
boolean flag = true;
152+
for (int i = 2; i <= Math.sqrt(aar); i++) {
153+
if (aar % i == 0) {
154+
flag = false;
155+
break;
156+
}
157+
}
158+
return flag;
159+
}
160+
161+
/**
162+
* 所谓“完数”, 是指这个数恰好等于它的因子之和,例如6=1+2+3 给定一个最大值max, 返回一个数组, 数组中是小于max 的所有完数
163+
*
164+
* @param max
165+
* @return
166+
*/
167+
public static int[] getPerfectNumbers(int max) {
168+
if (max < 1) {
169+
return null;
170+
}
171+
int[] arr = new int[max];
172+
int size = 0;
173+
for (int i = 1; i <= max; i++) {
174+
if (isPerfectNumber(i)) {
175+
arr[size++] = i;
176+
}
177+
}
178+
return Arrays.copyOf(arr, size);
179+
}
180+
181+
private static boolean isPerfectNumber(int num) {
182+
int sum = 0;
183+
for (int i = 1; i < num; i++) {
184+
if (num % i == 0) {
185+
sum += i;
186+
}
187+
188+
}
189+
if (sum == num) {
190+
return true;
191+
} else
192+
return false;
193+
}
194+
195+
/**
196+
* 用seperator 把数组 array给连接起来 例如array= [3,8,9], seperator = "-" 则返回值为"3-8-9"
197+
*
198+
* @param array
199+
* @param s
200+
* @return
201+
*/
202+
public static String join(int[] array, String seperator) {
203+
if (array.length < 1) {
204+
return null;
205+
}
206+
StringBuilder string = new StringBuilder();
207+
for (int i = 0; i < array.length - 1; i++) {
208+
string.append(array[i]).append(seperator);
209+
}
210+
string.append(array[array.length - 1]);
211+
return string.toString();
212+
}
213+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package org.Ralf.ArrayUtilTest;
2+
3+
import static org.junit.Assert.*;
4+
5+
import org.Ralf.ArrayUtil.ArrayUtil;
6+
import org.junit.Assert;
7+
import org.junit.Before;
8+
import org.junit.BeforeClass;
9+
import org.junit.Test;
10+
11+
public class ArrayUtilTest {
12+
13+
14+
@Before
15+
public void setUp() throws Exception {
16+
}
17+
18+
@Test
19+
public void reverseArray() {
20+
int[] origin = {9,8,7,6,5,4,3,2,1};
21+
int[] originCopy = origin;
22+
int[] reverse = {1,2,3,4,5,6,7,8,9};
23+
ArrayUtil.reverseArray(origin);
24+
Assert.assertArrayEquals(origin, reverse);
25+
ArrayUtil.reverseArray(origin);
26+
Assert.assertArrayEquals(origin, originCopy);
27+
}
28+
29+
@Test
30+
public void removeZero(){
31+
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
32+
int[] newarr = ArrayUtil.removeZero(oldArr);
33+
int[] realArr = {1,3,4,5,6,6,5,4,7,6,7,5};
34+
Assert.assertArrayEquals(newarr, realArr);
35+
}
36+
37+
@Test
38+
public void merge(){
39+
40+
int[] a1 ={3, 5, 7,8};
41+
int[] a2 = {4, 5, 6,7};
42+
int[] newarr = ArrayUtil.merge(a1, a2);
43+
int[] realArr = {3,4,5,6,7,8};
44+
Assert.assertArrayEquals(newarr, realArr);
45+
}
46+
47+
@Test
48+
public void grow(){
49+
int[] oldArray = {2,3,6};
50+
int[] realArr = {2,3,6,0,0,0};
51+
int[] newArray = ArrayUtil.grow(oldArray, 3);
52+
Assert.assertArrayEquals(newArray, realArr);
53+
}
54+
55+
@Test
56+
public void fibonacci(){
57+
58+
int[] realArr = {1,1,2,3,5,8,13};
59+
int[] newArray = ArrayUtil.fibonacci(15);
60+
Assert.assertArrayEquals(newArray, realArr);
61+
}
62+
@Test
63+
public void getPrimes(){
64+
int[] realArr = {2,3,5,7,11,13,17,19};
65+
int[] newArray = ArrayUtil.getPrimes(23);
66+
Assert.assertArrayEquals(newArray, realArr);
67+
}
68+
69+
@Test
70+
public void getPerfectNumbers(){
71+
int[] realArr = {6, 28, 496, 8128};
72+
int[] newArray = ArrayUtil.getPerfectNumbers(10000);
73+
Assert.assertArrayEquals(newArray, realArr);
74+
}
75+
76+
@Test
77+
public void join(){
78+
int[] realArr = {6, 28, 496, 8128};
79+
int[] newArray = ArrayUtil.getPerfectNumbers(10000);
80+
Assert.assertArrayEquals(newArray, realArr);
81+
}
82+
83+
84+
85+
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
98+
99+
100+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.coderising.litestruts;
2+
3+
public class LoginAction {
4+
5+
private String name;
6+
private String passWord;
7+
private String message;
8+
public String getName() {
9+
return name;
10+
}
11+
public void setName(String name) {
12+
this.name = name;
13+
}
14+
public String getPassWord() {
15+
return passWord;
16+
}
17+
public void setPassWord(String passWord) {
18+
this.passWord = passWord;
19+
}
20+
public String getMessage() {
21+
return message;
22+
}
23+
public void setMessage(String message) {
24+
this.message = message;
25+
}
26+
public String execute(){
27+
if ("test".equals(name) && "1234".equals(passWord)) {
28+
this.message = "login successful";
29+
return "success";
30+
}
31+
this.message = "login failed,please check your user/pwd";
32+
return "fail";
33+
}
34+
}

0 commit comments

Comments
 (0)