1丶break语句
public static int fun(){
int temp=0;
int i = 1;
for (;; i++) {
temp += i;
if(temp > 1000){
break; //当temp大于1000时终止循环
}
}
return i;
}
2丶continue语句
输出100-200之间能被3整除的数
public static void continueTest() {
int j = 0;
for (int i = 100; i <= 200; i++) {
if (i % 3 == 0) {
continue; //终止本次循环并输出能被3整除的数
}
System.out.printf("% 5d", i);
j++;
if (j % 10 == 0) { //j能被10整除时,换行输出
System.out.println();
}
}
}
3丶一维数组
一维数组的初始化即定义
public static void Array(){
int[] array1 = new int[10];
int[] array2 = {1,2,3,9,5};
Arrays.sort(array2);
array1 = new int[]{1,2,3};
}
用数组输出斐波那契数列的前20项
public static void Fibonaci(int[] array){
array[0] = 1;
array[1] = 1;
for (int i = 2; i < array.length; i++) {
array[i] = array[i-1] + array[i-2];//数组第i项的值等于第i-1与第i-2项的he
}
}
4丶实现二分查找算法
public static int biseCtion(int array[],int x){
int left = 0;
int right = array.length-1;//将数组最后一个元素的下标值赋给right
int middle = 0;
if(x < array[left] || x > array[right] || left > right){//如果x值在数组最大与最小值之外或者left>right
return -1;
}
while (left <= right){
middle = (left + right)/2;
if(x < array[middle]){
right = middle - 1; //将middle-1的值赋给right成为新的right
}else if(x > array[middle]){
left = middle + 1; //将middle+1的值赋给left成为新的left
}else {
return middle; //返回middle的值
}
}
return -1;//没有找到x的值时返回-1
}
5丶求连续子数组的最大和
public static int maxArray(int arrray[],int n){
int result = 0; //子数组相加的和
int temp = 0; //从起点开始的子数组元素相加的和
result = temp =arrray[0]; //从第一个元素开始
for (int i = 1; i < n ; i++) {
temp = Math.max(temp + arrray[i] , arrray[i]);//用当前元素值和从起点开始到当前元素值得和作比较,值大者赋给temp
result = Math.max(temp , result);//用当前子数组的和与当前的result作比较,值大者赋给result
}
return result;//返回result的值,即为子数组和的最大值
}
6丶交换两数时会出现的问题
public class TestDemo5 {
public static void swap(int a,int b){
int temp = 0;
temp = b;
b = a;
a = temp;
}
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a,b);
System.out.println(a);
System.out.println(b);
}
}
输出为10,20 我们会发现这两个数的值并没有交换,这是因为在JAVA中所不能直接这样传地址,我们给方法“传址”时实际上传递的是实参的地址的拷贝,它跟我们实参所指向的地址虽然相同,但却是两个不同的个体。所以我们在方法中对形参进行重新赋值时,改变的只是形参所指的地址,而实参所指向的地址并没有被改变,所以其值不变。
改进方法:
public class TestDemo5 {
public static void swap(int a,int b){
int temp = 0;
temp = b;
b = a;
a = temp;
System.out.println(a);
System.out.println(b);
}
public static void main(String[] args) {
int a = 10;
int b = 20;
swap(a,b);
}
}
7丶逆置数组
public static void nzArray(){
int[] a={1,2,3,4}; //定义数组a
int j = a.length-1; //将数组最后一个元素的下标值赋给j
for (int i = 0; i < j; i++,j--) {
int temp = 0;
temp = a[j];
a[j]=a[i];
a[i]=temp; //将数组第一个元素与最后一个元素交换,第二个与倒数第二个元素交换,以此类推
}
System.out.println(Arrays.toString(a));//打印数组
}