Summing Values 求和
import java.util.ArrayList; class Test{ public static void main(String args[]){ int[] a={21,23,43,76,77,38,19}; int result=0; for(int target:a){ result += target; } System.out.println(result); } }
用for each 循环
Swap two values 交换
import java.util.ArrayList; class Test{ public static void main(String args[]){ int[] a={21,33,43,76,77,38,19}; //exchange 77 with 33 //use a temp int temp=a[1]; a[1]=a[4]; a[4]=temp; for(int target:a){ System.out.println(target); } } }
使用一个中间变量,将被更换的变量暂时存放
Remove values --在动态数组中,删除元素
将静态数组的元素,全部放到动态数组里面去,并且删除全部的奇数
import java.util.ArrayList;
class Test{
public static void main(String args[]){
int[] a={21,33,43,76,77,38,19};
ArrayList<Integer> b= new ArrayList<Integer>();
//会自动的将一个基本数据类型转换成引用数据类型
for(int target:b){
System.out.println(target);
}
for(int i=0;i<b.size();i++){
//获得b数组第i位的数值
//将奇数位的数字删掉
if(b.get(i)%2==1){
b.remove(i);
}
}
System.out.println("After deletion:")
for(int target:b){
System.out.println(target);
}
}
}
import java.util.ArrayList;
class Test{
public static void main(String args[]){
int[] a={21,33,43,76,77,38,19};
ArrayList<Integer> b= new ArrayList<Integer>();
for(int target:a){
b.add(target);
//b.add(new Integer(target));
}
for(int target:b){
System.out.println(target);
}
for(int i=0;i<b.size();i++){
if(b.get(i)%2==1){
b.remove(i);
}
}
System.out.println("After deletion:");
for(int target:b){
System.out.println(target);
}
}
}
结果却发现,并没有把33这个奇数删掉,因为动态数组,每删掉一个,每个元素的序列号也会发生改变,这样将导致不一定会遍历到每一个元素。
import java.util.ArrayList;
class Test{
public static void main(String args[]){
int[] a={21,33,43,76,77,38,19};
ArrayList<Integer> b= new ArrayList<Integer>();
for(int target:a){
b.add(target);
//b.add(new Integer(target));
}
for(int target:b){
System.out.println(target);
}
for(int i=0;i<b.size();i++){
if(b.get(i)%2==1){
b.remove(i);
}
}
System.out.println("After deletion:");
for(int target:b){
System.out.println(target);
}
//将循环变为从后往前删除
//解法不唯一,可以自己做一些探讨
//fix bug
for(int i=b.size()-1;i>=0;i--){
if(b.get(i)%2==1){
b.remove(i);
}
}
System.out.println("The Second time deletion:");
for(int target:b){
System.out.println(target);
}
}
}
find the largest value/smallest value
import java.util.ArrayList;
class Test{
public static void main(String args[]){
int[] a={21,33,43,76,77,38,19};
int max=0;
for(int i=0;i<a.length;i++){
if(a[i]>max){
max=a[i];
}//greedy algorithm
}
System.out.println(max);
}
}
但是这个代码是有大bug 的,如果比较的元素值都是复数,那么max就会一直是0,而无法取到最大值。
所以max的初始值的设置,可以设置为数组中本身存在的数比如a[0].
find the index of the largest value /smallest value
import java.util.ArrayList;
class Test{
public static void main(String args[]){
int[] a={21,33,43,76,77,38,19};
int max=a[0];
int min=a[0];
//index of max number
int p1=0;
//index of min number
int p2=0;
for(int i=0;i<a.length;i++){
if(a[i]>max){
max=a[i];
p1=i;
}//greedy algorithm
if(a[i]<min){
min=a[i];
p2=i;
}
}
System.out.println("Max value is :"+max+" , at "+p1);
System.out.println("Min value is :"+min+" , at "+p2);
}
}