1.编写方法实现五角数的计算(1,5,12,22,…,n(3n-1)/2)。显示前100个五角数
import java.util.*;
class Test{
public static int getPentagonalNumber(int n){
return n*(3*n-1)/2;
}
public static void main(String[] args){
for(int i=0;i<100;i++){
System.out.print(getPentagonalNumber(i)+" ");
}
}
}
华氏度与摄氏度转换
class ctf{
public static double celToFah(double cel){
return (9.0/5)*cel+32;
}
public static double fahToCel(double fah){
return (5.0/9)*(fah-32);
}
public static void main(String[] args){
System.out.println("cel\t\tFah");
System.out.println("---------------------------------");
for(int i=31;i<40;i++){
System.out.println((double)i+ "\t\t"+celToFah(i));
}
//System.out.print();
System.out.println("fah\t\tcel");
System.out.println("---------------------------------");
for(int i=30;i<=120;i++){
System.out.println((double)i+"\t\t"+fahToCel(i));
}
}
}
编写方法print,该方法有一个参数,若参数为字符串,输出每个字符,中间用空额隔开;若参数为int型整数,输出每个数字,中间用空格隔开。
import java.util.*;
public class Test3{
public static void print(String s) {
for(int i=0;i<s.length();i++){
System.out.print(s.charAt(i)+" ");
}
System.out.println();
}
public static void print(int i) {
if(i!=0) {
print(i/10);
System.out.print(" "+i%10);
}
}
public static void main(String args[]) {
print("abcdef");
print(123456);
}
}
随机产生100个0-100的随机数,并统计每个随机数出现的次数
import java.util.*;
public class Test {
public static void main(String[] args) {
int [] a=new int[10];
for(int i=0;i<100;i++){
a[(int)(Math.random()*10)]++;
}
for(int i=0;i<a.length;i++){
System.out.println(i+":"+a[i]);
}
System.out.println("Hello world!");
}
}
用foreach语法实现遍历完成上题
public class foreach1{
public static void main(String []args) {
int [] a=new int[10];
for(int i=0;i<100;i++){
a[(int)(Math.random()*10)]++;
}
/*for(int i=0;i<a.length;i++){
System.out.println(i+":"+a[i]);
}*/
//System.out.print();
System.out.println("0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ");
//System.out.println("1: 2: 3: 4: 5: 6: 7: 8: 9: ");
System.out.println();
for(int u:a){
System.out.print(u+" ");
}
}
数组的复制操作arraycopy
做法:System.out.arraycopy(a1,0,a2,0,a2.length);
这里面分别是 数组a1 起始地址 a2 起始地址 需要复制的长度
import java.util.*;
public class test{
public static void main(String[] args){
int []a1,a2;
a1=new int[10];
a2=new int[5];
for(int i=0;i<a1.length;i++){
a1[i]=(int)(Math.random()*10);
System.out.print(a1[i]+" ");}
System.out.println();
for(int i=0;i<a2.length;i++){
a2[i]=(int)(Math.random()*10);
System.out.print(a2[i]+" ");}
System.out.println();
System.arraycopy(a1,0,a2,0,a2.length);//前面赋值给后面的数组
for(int u:a2){
System.out.print(u+" ");
}
}
}
数组的另一个复制方法:全复制,即复制整一个数组clone()
缺点:只能复制整一个数组,不能进行单独操作。
public class test321ycf{
public static void main(String args[]){
int []a1={6,7,8,9};
int []a2=a1.clone();
for(int u:a2){
System.out.print(u+" ");
}
}
}
数组作为方法的参数
public class testbyycf{
public static void printArray(int []array){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
public static void main(String args[]){
int []array={6,7,8,9};
printArray(array);
}
}
修改数组的元素
>>数值传递:对于基本数据类型,传递的是实参的值
>>对于数组类型参数,传递的是数组的引用,给方法传递的是这个引用。即传递共享信息方法的数组与传递的数组是一样的。
public class test321{
public static void main(String args[]){
int x=1;
int []y=new int[10];
y[0]=100;//这里已经很明显的告诉我们为什么我们能够修改数组的值。
m(x,y);
System.out.println("x is"+x);
System.out.println("y[0] is"+y[0]);
}
public static void m(int k, int[] ns){
k=100;
ns[0]=5500;
}
}
//一开始创建了y,y的赋值被定义为0;然后调用了m方法。m方法里面k被赋值为100;ns未赋值。
//后来y和ns都被赋值5500,这是因为它们都指向相同的数组;
///所以对应数组对应的程序栈上栈顶被赋值5500,也就是数组的初始值为5500;
//我们能够修改数组的值,但我们却不能修改x的值。
数组作为方法的返回
当从方法中返回数组时,是数组的引用被返回
public class 321{
public static int []reserve(int []list){
int []result =new int[list.length];
for(int i=0,j=list.length-1;i<list.length;i++,j--){
result[j]=list[i];
System.out.print(result[j]+" ");//此处还是引用,所以其实只是在遍历list数组,所以不能正确赋值。
}
System.out.println();
for(int u:result){
System.out.print(u+" ");
}
return result;
}
public static void main(String args[]){
int []list={6,7,8,9};
reserve(list);
}
}
用new创建的对象或数组,都不会因为方法的结果而消失,只会因为没有引用而消除
向main里面传递字符串参数
在运行Java时输入字符串参数。
import java.util.*;
class test321{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
for(String u:args){
System.out.print(u);
}
}
}
联系3数组扩容
编写方法,将数组容量扩大k,把原先数组元素复制到新的大的数组中然后返回新数组。
import java.util.*;
class tes321{
public static int [] kuoron(int []a){
Scanner input =new Scanner(System.in);
int k= input.nextInt();
int []b=new int[a.length+k];
b=a.clone();
for(int u:b){
System.out.print(u+" ");
}
return b;
}
public static void main(String args[]){
int []a={1,2,3,4,5,6};
kuoron(a);
}
}
联系4:将两个有序列表合并为一个有序列表
思路:一审:两个列表会不会有重复元素,其次就是比较大小,排序。
二理:因为在列表的比较中,会出现一个表的元素被比较完,而另一个表的元素还剩余的情况。所以要做比较判断。
import java.util.*;
public class merge{
public static int []merge(int[]a,int []b){
int []c=new int[a.length+b.length];
int i,j,k;
i=j=k=0;
while(i<a.length && j<b.length){
if(b[j]<a[i]){//细节:以b开始,因为b数组长度最短//
c[k++]=b[j++];
}else{
c[k++]=a[i++];
}
}
while(i<a.length){
c[k++]=a[i++];}
while(j<b.length){
c[k++]=b[j++];}
return c;
}
public static void main(String args[]){
int []a={5,8,10,11,12,13,19};
int []b={6,7,8,9};
int []c=merge(a,b);
for(int u:c){
System.out.print(u+" ");
}
}
}
思路二:用字符串特有排序连接,对于最后结果如果需要数值型,那根据之前的转换即可。
import java.util.*;
class hebing{
public static String heBin(String s){
char []a=new char[s.length()];
for(int i=0;i<s.length();i++){
a[i]=s.charAt(i);
}
String b="";
Arrays.sort(a);
for(int i=0;i<s.length();i++){
b+=a[i];
}
return b;
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("The first list's long:");
int n = input.nextInt();
System.out.println("The Scond list's long:");
int m = input.nextInt();
String str = "";
System. out. println("Print the String:");
for(int i=0;i<n;i++){
int number = input.nextInt();
str+=number;
}
for(int i=0;i<m;i++){
int number2 = input.nextInt();
str+=number2;
}
String s=heBin(str);
char []a =new char[s.length()];
for(int i=0;i<s.length();i++){
a[i]=s. charAt(i);
System. out. print(a[i]+" ");}
}
}
Arrays类:用于排序
多维数组
声明一个为int型的二维数组引用m
int[][]m;
m=new int[3][6];
一下为Arrays的一些操作,填充,升序排序,部分排序以及二分查找
import java.util.*;
class test{
public static void main(String[] args){
int []list={1,2,3,4,5,6};
System.out.print(java.util.Arrays.toString(list));
int []list1={3,4,7,10};
int []list2={3,4,7,10,10};
java.util.Arrays.fill(list1,5);//全部填充为5//
java.util.Arrays.fill(list2,1,4,8);//除了下标为1和4的不变,其他填充为8//
System.out.println();
System.out.println(java.util.Arrays.toString(list1));
System.out.print(java.util.Arrays.toString(list2));
int []list3={5,5,5,5};
System.out.println();
System.out.print(java.util.Arrays.equals(list1,list3));//因为前面的操作中已经将list1的数组全部填为5了。
//二分法查找
int []lis4={3,4,5,6,7,8,9,66,77,99};//集合一定是先满足升序的//
char []char5={'a','b','c','f','z'};
System.out.println();
System.out.println("Index is"+java.util.Arrays.binarySearch(list,3));
System.out.println("Index is"+java.util.Arrays.binarySearch(list,12));
System.out.println("Index is"+java.util.Arrays.binarySearch(char5,'a'));
System.out.println("Index is"+java.util.Arrays.binarySearch(char5,'t'));
//sort和parallelSort进行排序和部分排序//
double []list6={6.0,9.0,8.0,6.0,7.0,0.0};
int []list7={6,9,8,6,7,0};
//java.util.Arrays.sort(list6,1,3);这里是排序从[1]到[3-1]之间的数//
java.util.Arrays.parallelSort(list7,1,3);
System.out.println(java.util.Arrays.toString(list7));//与sort一样也是可以部分排序以及升序排序//
//System.out.print(java.util.Arrays.toString(list6));
}
}
- 实际上java中没有二维(多维)数组,只有一维数组,所谓二维数组就是一维数组的一维数组。
- 二维数组的遍历
`int [][]m;
...
for(int i=0;i<m.length;i++)
for(int i=0;i<m[i].length;i++)
`
- 二维数组初始化
int[] []m={{3,2},{3,9,1},{5}};
- 都看第一维,第一维代表了几行,而第二维代表了有几列。