标签:blog http io ar 使用 for java on 数据
class Demo1 { public static void main(String[] args) { //求1--10的累加和 int sum =0; for(int i=1;i<=10;i++) { sum = sum+i; } System.out.println("sum="+sum); /* sum = sum+1; sum = sum +2; sum = sum+3; */ } } class Demo2 { public static void main(String[] args) { //统计1--100之间可以被7整除的数的个数 int count =0; for(int i=1;i<=100;i++) { if(i%7==0) count++; } System.out.println("count="+count); } } class Demo3 { public static void main(String[] args) { //3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数。 int day =0; for(int i=3000;i>=5;i/=2) { day++; } System.out.println("day="+day); } } import java.util.Scanner; import java.util.Random; class Demo4 { public static void main(String[] args) { //产生一个1--10之间的随机数,用户去猜这个数,直到猜中为止 Scanner sc = new Scanner(System.in); //产生随机数 Random random = new Random(); int r = random.nextInt(10)+1; int guess; do{ System.out.println("猜一个1---10 之间的数"); guess = sc.nextInt(); if(r>guess) System.out.println("偏小了"); if(r<guess) System.out.println("偏大了"); }while(r!=guess); System.out.println("恭喜!!"); } } import java.util.Scanner; class Demo5 { public static void main(String[] args) { //用户从键盘输入一个数,求该数的阶乘,可以重复该过程 // 5!= 5*4*3*2*1 Scanner sc = new Scanner(System.in); int jieCheng=1,flag =0; do{ System.out.println("输入一个数"); int num = sc.nextInt(); jieCheng=1; for(int i=num;i>=1;i--) { jieCheng = jieCheng*i; } System.out.println("jieCheng="+jieCheng); System.out.println("是否继续(1/0)?"); flag = sc.nextInt(); }while(flag==1); } } import java.util.Scanner; class Demo6 { public static void main(String[] args) { //计算正整数各位数的和 1234 10 Scanner sc = new Scanner(System.in); System.out.println("输入一个数"); int num = sc.nextInt(); int sum = 0; while(num!=0) { sum = sum + num%10; num = num/10; } System.out.println("sum="+sum); /* sum = sum + num%10; num = num/10; sum = sum + num%10; num = num/10; sum = sum + num%10; num = num/10; sum = sum + num%10; num = num/10; */ } } class Demo7 { public static void main(String[] args) { /* ********** ********** ********** */ for(int i=1;i<=3;i++) { for(int i=1;i<=10;i++) System.out.print("*"); } } } /* * ** *** **** ***** 1 12 123 1234 12345 九九乘法表 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 */ class Demo8 { public static void main(String[] args) { for(int i=1;i<=5;i++) { for(int j=1;j<=i;j++) System.out.print("*"); System.out.println(); } /* 1 12 123 1234 12345 */ for(int i=1;i<=5;i++) { for(int j=1;j<=i;j++) System.out.print(j); System.out.println(); } /* 九九乘法表 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 */ for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) System.out.print(j+"*"+i+"="+j*i+" "); System.out.println(); } } } /* 打印一个实心菱形图案 * *** ***** ******* ***** *** * */ class Demo9 { public static void main(String[] args) { for(int i=1;i<=4;i++) { for(int j=1;j<=4-i;j++) System.out.print(" "); for(int j=1;j<=2*i-1;j++) System.out.print("*"); System.out.println(); } for(int i=1;i<=3;i++) { for(int j=1;j<=i;j++) System.out.print(" "); for(int j=1;j<=7-2*i;j++) System.out.print("*"); System.out.println(); } } } /* 3.打印一个空心菱形图案 问题:用*号打印一个如下的空心菱形图案 : * * * * * * * * * * * * */ class Demo10 { public static void main(String[] args) { for(int i=1;i<=4;i++) { for(int j=1;j<=4-i;j++) System.out.print(" "); for(int j=1;j<=2*i-1;j++) { if(j==1 || j==2*i-1) System.out.print("*"); else System.out.print(" "); } System.out.println(); } for(int i=1;i<=3;i++) { for(int j=1;j<=i;j++) System.out.print(" "); for(int j=1;j<=7-2*i;j++) { if(j==1 || j==7-2*i) System.out.print("*"); else System.out.print(" "); } System.out.println(); } } } /* break:结束循环 continue: 结束某一次循环 */ class Demo11 { public static void main(String[] args) { for(int i=1;i<=5;i++) { if(i==3) break; System.out.println(i); } for(int i=1;i<=3;i++) { break; System.out.println(i);//无法访问的语句 } for(int i=1;i<=4;i++) { for(int j=1;j<=3;j++) { if(j==2) break;//结束的是内部循环 } } m:for(int i=1;i<=4;i++) { n:for(int j=1;j<=3;j++) { if(j==2) break m;//结束的是外部循环 } } for(int i=1;i<=10;i++) { if(i%2==0) continue;//结束本次循环,直接进入下一次循环,也就是去执行i++ System.out.println(i); } } } 函数 import java.util.Scanner; class Demo12 { public static void main(String[] args) { //编写一个程序,最多接收10个数,求这些数的和, //用户可以通过输入999终止程序,并显示输入数的和 Scanner sc = new Scanner(System.in); int sum =0,num; for(int i=1;i<=10;i++) { System.out.println("输入一个数"); num = sc.nextInt(); if(num==999) break; sum = sum+num; } System.out.println("sum="+sum); } } import java.util.Scanner; class Demo13 { //定义了一个具备求和功能的函数 public static void add() { int num1,num2,sum=0; Scanner sc = new Scanner(System.in); System.out.println("输入第一个数"); num1 = sc.nextInt(); System.out.println("输入第二个数"); num2 = sc.nextInt(); sum = num1+num2; System.out.println("sum="+sum); } public static void main(String[] args) { //实现求两个数的和,两个数从键盘录入 int num1,num2,sum=0; Scanner sc = new Scanner(System.in); System.out.println("输入第一个数"); num1 = sc.nextInt(); System.out.println("输入第二个数"); num2 = sc.nextInt(); sum = num1+num2; System.out.println("sum="+sum); for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) System.out.print(j+"*"+i+"="+j*i+" "); System.out.println(); } System.out.println("输入第一个数"); num1 = sc.nextInt(); System.out.println("输入第二个数"); num2 = sc.nextInt(); sum = num1+num2; System.out.println("sum="+sum); System.out.println("******************"); System.out.println("输入第一个数"); num1 = sc.nextInt(); System.out.println("输入第二个数"); num2 = sc.nextInt(); sum = num1+num2; System.out.println("sum="+sum); } } /* 从上面的程序看出,每次用到求和功能都要写一遍求和的代码 出现了重复代码,也就是相同功能的代码需要写多次 使用函数可以解决这个问题 */ import java.util.Scanner; class Demo14 { //定义了一个具备求和功能的函数 //函数:具备特定功能的一段独立的代码段,什么时候用到这个功能就什么时候调用这个函数 public static void add(int a,int b)//形式参数,用来接收数据的 { int sum = a+b; System.out.println("sum="+sum); } //main函数被JVM调用 public static void main(String[] args) { //通常程序中用到的数据都由主函数提供 //自定义函数只要实现该实现的功能就行了 int num1,num2; Scanner sc = new Scanner(System.in); System.out.println("输入第一个数"); num1 = sc.nextInt(); System.out.println("输入第二个数"); num2 = sc.nextInt(); add(num1,num2);//实际参数 //add(1,2); } } import java.util.Scanner; class Demo15 { public static int add(int a,int b)//被调用者 { int sum = a+b; return sum;//返回给调用者,返回到调用该函数的位置 int c = 4; } //main函数被JVM调用,void表示无返回值 public static void main(String[] args) //调用者 { int num1,num2; Scanner sc = new Scanner(System.in); System.out.println("输入第一个数"); num1 = sc.nextInt(); System.out.println("输入第二个数"); num2 = sc.nextInt(); //调用者如何得到被调函数的结果值 int sum = add(num1,num2);//接收 if(sum>200) System.out.println("这个数大于200"); } } import java.util.Scanner; class Demo16 { public static int add(int a,int b) { int sum = a+b; return sum; } public static void main(String[] args) { int num1,num2; Scanner sc = new Scanner(System.in); System.out.println("输入第一个数"); num1 = sc.nextInt(); System.out.println("输入第二个数"); num2 = sc.nextInt(); int sum = add(num1,num2); if(sum>200) System.out.println("这个数大于200"); } }
class Demo18 { public static void main(String[] args) { fun1(12); } //如果一个函数没有返回值,也可以使用return,意思是返回到函数调用的位置,结束函数调用 public static void fun1(int num) { if(num>10) return; else System.out.println(num); } //如果一个函数有返回值,那么必须保证在任何情况下都有返回值 public static int fun2(int a,int b) { if(a>b) return 1; else if(a<b) return 2; return 3; } } /*怎么定义一个函数? 1:确定函数的执行结果:是为了确定是否有返回值 有结果:有返回值 无结果:无返回值 2:确定函数在执行的过程当中是否用到不确定的数据:是为了确定是否需要参数 用到了不确定的数据:有参数 没用到不确定的数据:无参数 */ class Demo19 { public static void main(String[] args) { ju(5,10); } //判断两个数是否相等 //结果:是相等或不相等 boolean //参数:两个数 public static boolean isEquals(int a,int b) { return a==b; } //求两个数中的最大值 //结果:最大值 int //参数:两个数 public static int max(int a,int b) { return a>b?a:b; } //打印矩形 //结果:无结果 //参数:矩形的长和宽是不确定的数据 public static void ju(int row,int col) { for(int i=1;i<=row;i++) { for(int j=1;j<=col;j++) System.out.print("*"); System.out.println(); } } //打印99乘法表 //结果:无结果 //参数:无参数 public static void jiuJiu() { for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) System.out.print(j+"*"+i+"="+j*i+" "); System.out.println(); } } } //重载:在同一个class中,出现了函数名称相同但参数不同的现象 /* 参数不同: 参数的个数不同 参数的类型不同 个数类型都不同 */ class Demo20 { public static void main(String[] args) { add(23,45); } public static int add(int a,int b) { return a+b; } public static int add(int a,int b,,int c) { return a+b+c; } public static double add(double a,double b) { return a+b; } public static void jiuJiu() { jiuJiu(9); } //打印99册乘法表,行数由参数决定 public static void jiuJiu(int row) { for(int i=1;i<=row;i++) { for(int j=1;j<=i;j++) System.out.print(j+"*"+i+"="+j*i+" "); System.out.println(); } } } class Demo21 { public static void main(String[] args) { } } /* public static void show(int a,boolean b,double d) A:public static int show(int a,boolean b,double d)//不是重载,重载和返回值无关 B:public static int show(int v,boolean n,double m)//不是重载 C:public static int show(int a)//是 d:public static void show(int a,double b,boolean d)//是 e:public static void show(int a,boolean b)//是 */ //数组:是一种数据类型,可以存储多个数据,属于引用数据类型 //数组在定义时必须指定数组的长度 class Demo22 { public static void main(String[] args) { //数据类型 变量名称 =初始化值; int a; //定义一个可以存储5个数据的数组 //new int[5]; //为了使用数组,需要给数组起一个名字 int[] arr = new int[5];//4*5=20 //数组是通过下标来存储或取数据的的,下标是从0开始的 //char '\u0000' System.out.println(arr[0]); /* java程序在运行时,jvm会把内存分为5块 栈,堆,方法区,本地方法区,寄存器 栈:存储的是局部变量,在函数,语句中定义的变量 变量的作用范围结束就会立刻从栈中消失 堆:存储的是实体(数组,对象),实体都是可以存储多个数据的 特点:1:会分配内存首地址 2:有默认值 3:垃圾回收机制 */ } }
//引用数据类型和基本数据类型的区别 class Demo23 { public static void main(String[] args) { /* int a = 12,b = 21; System.out.println("a="+a+",b="+b); huan(a,b); System.out.println("a="+a+",b="+b); */ int[] arr = new int[2]; arr[0] = 12; arr[1] = 21; System.out.println("arr[0]="+arr[0]+",arr[1]="+arr[1]); huan(arr); System.out.println("arr[0]="+arr[0]+",arr[1]="+arr[1]); } public static void huan(int[] arr) { int c ; c = arr[0]; arr[0] = arr[1]; arr[1] = c; } //交换两个变量的值 //结果:无结果 //参数:两个数 public static void huan(int a,int b) { int c; c = a; a = b; b = c; } }
class Demo24 { public static void main(String[] args) { String ss = "haha"; char[] arr = new char[3]; arr[0] ='n'; fun(ss,arr); System.out.println(ss+" "+arr[0]); } public static void fun(String str,char[] ch) { str = "hehe"; ch[0]='m'; } } //数组:存放多个数,连续存放的,同一个数组只能存储同一中类型的数据 class Demo25 { public static void main(String[] args) { int[] arr = new int[3]; //System.out.println(arr[3]);//ArrayIndexOutOfBoundsException //arr = null; //System.out.println(arr[0]);//NullPointerException //数组的初始化 // a =45; //int[] a = new int[]{23,5,67,89}; int[] b = {23,4,56,1,567}; //数组的遍历 for(int i=0;i<5;i++) System.out.print(b[i]+" "); for(int i=0;i<b.length;i++) System.out.print(b[i]+" "); } }
//求数组的最值 class Demo26 { public static void main(String[] args) { int[] arr = {12,4,56,123,8,89}; int max = max(arr); System.out.println("max="+max); } //求数组中的最大值 //结果:最大值 //参数:数组 public static int max(int[] arr) { int max = arr[0]; for(int i=1;i<arr.length;i++) { if(max<arr[i]) max = arr[i]; } return max; } } //排序:选择,冒泡 import java.util.Arrays; class Demo27 { public static void main(String[] args) { int[] arr = {23,45,12,6,78}; print(arr); //select(arr); //bubble(arr); Arrays.sort(arr); System.out.println(); print(arr); } //打印数组中的数据 public static void print(int[] arr) { for(int i=0;i<arr.length;i++) { if(i!=arr.length-1) System.out.print(arr[i]+","); else System.out.print(arr[i]); } } //冒泡排序 //结果:无结果 //参数:数组 public static void bubble(int[] arr) { 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]) { huan(arr,j,j+1); } } } } //选择排序 //结果:无结果 //参数:数组 public static void select(int[] arr) { for(int i=0;i<arr.length-1;i++) { for(int j=i+1;j<arr.length;j++) { if(arr[j]<arr[i]) { huan(arr,j,i); } } } } //交换数组中的两个下标中对应的数 //结果:无结果 //参数:数组,两个下标 public static void huan(int[] arr,int i,int j) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; } }
//查找:一个数在数组中第一次出现的位置,不存在返回-1 class Demo28 { public static void main(String[] args) { int[] arr ={23,4,9,123,89,9}; int key = 99; int index = find(arr,key); System.out.println(index); } //查找 //结果:下标值或-1 //参数:数组,和被查找的数 public static int find(int[] arr,int key) { for(int i=0;i<arr.length;i++) { if(key==arr[i]) return i; } return -1; } } //二分法查找:前提条件:别查找的数组必须是有序的 import java.util.Arrays; class Demo29 { public static void main(String[] args) { int[] arr ={23,4,9,123,89,9}; int key = 99; Arrays.sort(arr); int index = halfSearch2(arr,key); System.out.println(index); } //二分法查找的第二种写法 public static int halfSearch2(int[] arr,int key) { int min = 0,max = arr.length-1,mid; mid = (min+max)/2; while(arr[mid]!=key) { if(key>arr[mid]) min = mid+1; if(key<arr[mid]) max = mid-1; if(min>max) return -1; mid = (min+max)/2; } return mid; } // 二分法查找 //结果:下标值或-1 //参数:数组,和被查找的数 public static int halfSearch(int[] arr,int key) { int min = 0,max = arr.length-1,mid; while(min<=max) { mid = (min+max)>>1; if(key>arr[mid]) min = mid+1; else if(key<arr[mid]) max = mid-1; else return mid; } return -1; } } 练习: 1. 已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E。 90~100为等级A,80~89为等级B,70~79为等级C, 60~69为等级D,0~59为等级E。 要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。 例如:当成绩为100时,该学生的等级是A。 2. 写出输出结果。 class Demo { public static void main(String[] args) { show(0);//i=15 show(1);//i=14 } public static void show(int i) { switch(i) { default: i+=2;//2 case 1: i+=1;//3 case 4: i+=8;//11 case 2: i+=4;//15 } System.out.println("i="+i); } } 3.写出输出的结果. class Demo { public static void main(String[] args) { int x=0,y=1; if(++x==y-- & x++==1||--y==0) System.out.println("x="+x+",y="+y);x=2,y=0 else System.out.println("y="+y+",x="+x); } } 4. 求出1~100之间,即使3又是7的倍数出现的次数? 5. 用程序的方式显示出下列结果。 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 6.写出程序结果。 class Demo { public static void main(String[] args) { int x = 1; for(show('a'); show('b') && x<3; show('c')) { show('d'); x++;//2 3 } } public static boolean show(char ch) { System.out.println(ch); return true; } } a b d c b d c B 本人作业: 数组练习: 1,将给定数组进行反转。{32,65,12,89,41} {41,89,12,65,32} import java.text.DecimalFormat; import java.util.Scanner; public class Test { public static void main(String[] args) { int[] arr = { 32, 65, 12, 89, 41 }; test1(arr); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } public static void test1(int[] arr) { for (int i = 0; i < arr.length / 2; i++) { int tem = arr[i]; arr[i] = arr[arr.length - 1 - i]; arr[arr.length - 1 - i] = tem; } } } 2,将给定的数组变成字符串,[元素1,元素2...]{34,12,65} --> "[34,12,65]" import java.text.DecimalFormat; import java.util.Scanner; public class Test { public static void main(String[] args) { int[] arr = { 32, 65, 12, 89, 41 }; System.out.print("\"["); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); if (i != arr.length - 1) System.out.print(","); } System.out.println("]\""); } } 3. 对于一个有序的数组,如果要插入一个元素并保证数组还有序,问如何获取该元素位置。(用二分法) import java.text.DecimalFormat; import java.util.Scanner; public class Test { public static void main(String[] args) { int[] arr = { 12, 23, 34, 45, 56, 67, 78 }; int key = 90; System.out.println(halfSearch(arr, key)); } public static int halfSearch(int[] arr, int key) { int min = 0, max = arr.length - 1, mid; while (min <= max) { mid = (min + max) >> 1; if (key > arr[mid]) min = mid + 1; else if (key < arr[mid]) max = mid - 1; else return mid; } return min; } } 以下题都用函数实现 1、编写一个程序,测试给定年份是否是闰年?(能被4整除但不能被100整除,或者能被 400整除的年份就是闰年) 略 2、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); int i = in.nextInt(); test(i); } public static void test(int i) { for (int j = 2; j <= i; j++) { if (i % j == 0) { System.out.print(j); test(i / j); j = i; } } } } 3.求101-200之内的素数?(只能被1和自身整除的数就是素数) 提示:让这个数除以从2开始到这个数的前一个数,如果都不能被整除,说明是素数 import java.text.DecimalFormat; import java.util.Scanner; public class Test { public static void main(String[] args) { for (int i = 101; i < 200; i++) { boolean flag = false; for (int j = 2; j < i; j++) { if (i % j == 0) { flag = true; } } if (!flag) { System.out.println(i); } } } } 4.有1、2、3、4四个数字,能组成多少个互不相同且无重复的三位数。 import java.util.Scanner; public class Test { public static void main(String[] args) { for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 4; j++) { for (int k = 1; k <= 4; k++) { if (!(i == j || i == k || j == k)) { System.out.print(i + " " + j + " " + k); System.out.println(); } } System.out.println(); } System.out.println(); } } } 6.输入三个整数x,y,z,请把这三个数由小到大输出 import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner in= new Scanner(System.in); int max,min; int x=in.nextInt(); int y=in.nextInt(); int z=in.nextInt(); min=x<y?x:y; min=min<z?min:z; max=x>y?x:y; max=max>z?max:z; int [] arr=new int[3]; arr[0]=min; arr[1]=x+y+z-max-min; arr[2]=max; for(int i=0;i<arr.length;i++) {System.out.print(arr[i]+",");} } } 7.求1至1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印5个数 import java.util.Scanner; public class Test { public static void main(String[] args) { int count = 0; for (int i = 1; i <= 1000; i++) { if (i % 3 == 2 && i % 5 == 3 && i % 7 == 2) { System.out.print(i + " "); count++; if (count % 5 == 0) { System.out.println(); } } } } } 8.求1-3+5-7+ …… -99+101的值。 import java.util.Scanner; public class Test { public static void main(String[] args) { int sum = 0; int count = 0; for (int i = 1; i <=101; i += 2) { count++; if (count % 2 != 0) { sum = sum + i; } else sum = sum - i; } System.out.println(sum); } } 9.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。 import java.text.DecimalFormat; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); int i = in.nextInt(); int b = i / 100; int s = i / 10 % 10; int g = i % 10; if (b * b * b + s * s * s + g * g * g == i) { System.out.println("YES"); } else { System.out.println("NO"); } } } 10.求出1~100之间,即是3又是7的倍数的数出现的次数? import java.util.Scanner; public class Test { public static void main(String[] args) { int count = 0; for (int i = 1; i <= 100; i++) { if (i % 3 == 0 && i % 7 == 0) { count++; } } System.out.println(count); } }
标签:blog http io ar 使用 for java on 数据
原文地址:http://blog.csdn.net/lc635408136/article/details/41879479