1、变量 运算符 类型转换
1.1手动输入一个学生的成绩,对这个成绩进行一次加分,加当前成绩的20%,输出加分后的成绩

Scanner scan = new Scanner(System.in); System.out.println("请输入一个成绩"); double num = scan.nextDouble(); num += num*0.2; System.out.println(num);
1.2商场举行店庆,抽几折打几折,先手动输入消费金额,在输入抽到的折扣,计算出折后的价格

Scanner scan = new Scanner(System.in); System.out.println("输入消费金额:"); double num = scan.nextDouble();//获取键盘数据 System.out.println("抽到的折扣:"); int dis = scan.nextInt();//获取键盘,扫描对象scan依然可用 double price = (num*dis)/10; System.out.println("折后的价格:" + price);
1.3手动输入一个4位数,求各位数之和

Scanner scan = new Scanner(System.in); System.out.println("请输入一个4位数:"); int i = scan.nextInt(); //思路:除以10 100 1000实现小数点左移取整 模10得到个位数的值 int a,b,c,d; d = i%10; c = i/10%10; b = i/100%10; a = i/1000%10; int num = a+b+c+d; System.out.println(num);
2、分支结构
2.1商场消费返利活动,手动输入顾客消费金额,如果金额打8折仍然满1000元用户就获得200元代金券一张(不考虑多张)

Scanner scanner = new Scanner(System.in); System.out.println("请输入消费金额:"); int i = scanner.nextInt();//这里只做整数计算 double dis = i*0.8;//打折后金额 if(dis>=1000){ dis -= 200; } System.out.println("最后支付费用为:"+dis);
2.2用户输入一个年份,如果是闰年输出是闰年(算法:非整百年份能被4整除,且不能被100整除,或者能被400整除的年份)

Scanner scanner = new Scanner(System.in);//创建扫描对象同时建立引用 System.out.println("请输入年份:"); int year = scanner.nextInt(); if(year%4==0&&year%100!=0||year%400==0){//思路:整百年份只有能被400整除的年份是闰年,非整百年份能被4整除,且不能被100整除) System.out.println("是闰年"); }else { System.out.println("不是闰年");
2.3手动输入一个整型会员,如果输入的是4位数字,输出“登录成功”,如果用户输入的不是4位数,输出“您输入的会员号有误”

Scanner scanner = new Scanner(System.in); System.out.println("请输入会4位员号:"); int num = scanner.nextInt(); int i = 0;//位计数 while (num != 0){ //巧用循环 i++; num /= 10; //除以10取整相当于小数点左移取整 } System.out.println(i); if (i == 4){ System.out.println("登录成功"); }else { System.out.println("输入有误"); }

Scanner scanner = new Scanner(System.in); System.out.println("请输入会4位员号:"); int num = scanner.nextInt(); int i = 0;//位计数 while (num != 0){ //巧用循环 i++; num /= 10; //除以10取整相当于小数点左移取整 } System.out.println(i); if (i == 4){ System.out.println("登录成功"); }else { System.out.println("输入有误"); } scanner.close();
2.4手动输入a b c三个变量的数值,要求通过数值交换,把输入的数值从小到大排序放入abc中,并输出

Scanner scanner = new Scanner(System.in); System.out.println("请输入3个整数:"); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); int i=0; //两两比较 if(a>b){ i=a; a=b; b=i; } if (a>c){ i=a; a=c; c=i; } if (b>c){ i=b; b=c; c=i; } System.out.print(a+"\t"+b+"\t"+c); scanner.close();
3、多分支结构
3.1商场根据会员积分打折,2000分以内打9折,4000以内打8折,8000分以内打7.5折,8000分以上打7折,使用if -else if 结构,实现手动输入购物金额和积分,计算出应缴金额

Scanner scanner = new Scanner(System.in); System.out.println("请输入会员的积分:"); int fen = scanner.nextInt(); System.out.println("请输入本次消费金额:"); int shop = scanner.nextInt(); if(fen<2000){ shop *= 0.9; }else if(fen<4000){ shop *= 0.8; }else if(fen<8000){ shop *= 0.75; }else{ shop *= 0.7; } System.out.println("应缴金额为:"+shop+"元"); scanner.close();
3.2机票价格按照淡季旺季,头等舱和经济舱收费。输入机票原价 月份和头等舱或经济舱,其中旺季(5-11月)头等舱9折,经济舱85折。淡季(11月-来年4月)头等舱7折,经济舱65折,最终输出机票价格

Scanner scanner = new Scanner(System.in); System.out.println("请输入机票原价:"); int piao = scanner.nextInt(); System.out.println("请输入当前月份:"); int month = scanner.nextInt(); System.out.println("请选择:1、头等舱 2‘经济舱"); int i = scanner.nextInt(); if(month>=5 && month<=11){ System.out.print("当前是旺季,"); if (i == 1){ piao *= 0.9; System.out.println("您的票是头等舱,折扣票价为:"+ piao); }else { piao *= 0.85; System.out.println("您的票是经济舱,折扣票价为:"+piao); } }else if(month==12 || month>=1 && month<=4){ System.out.print("当前是淡季,"); if (i == 1){ piao *= 0.7; System.out.println("您的票是头等舱,折扣票价为:"+piao); }else { piao *= 0.65; System.out.println("您的票是经济舱,折扣票价为:"+piao); } }else { System.out.println("月份错误"); } scanner.close();
3.3选择一个形状(1长方形 2正方形 3三角形 4圆形),根据不同的选择让用户输入不同的信息:长方形有长和宽,正方形有边长,三角形有底和高,原型有半径,计算输出指定形状的面积

Scanner scanner = new Scanner(System.in); //创建扫描对象 System.out.println("请选择一个形状:1长方形 2正方形 3三角形 4圆形"); int i = scanner.nextInt(); //获取键盘 float pi = 3.141592f; double result; //对比输入值 switch (i){ case 1: System.out.println("输入长度:"); int length = scanner.nextInt(); System.out.println("输入宽度:"); int wide = scanner.nextInt(); result = length * wide; System.out.println("长方形的面积是:"+ result); break; case 2: System.out.println("输入边长:"); int l = scanner.nextInt(); result = l*l; System.out.println("正方形的面积是:"+ result); break; case 3: System.out.println("输入底长:"); int d = scanner.nextInt(); System.out.println("输入高:"); double h = scanner.nextInt(); result = d*h/2; System.out.println("三角形的面积是:"+ result); break; case 4: System.out.println("输入半径:"); double r = scanner.nextDouble(); result = pi*r*r; System.out.println("圆的面积是:"+ result); break; } scanner.close();
4、循环结构
4.1随机生成一个1-100之间的数字num,循环让用户输入猜这个数。如果用户输入的数字大于num提示输入的数字比较大,如果用户输入的数字小于num提示输入的数字比较小。直到用户输入的数字和num相等为止,然后输出用户猜数的次数。

Random random = new Random();//创建随机数生成器对象 int num = random.nextInt(100)+1;//int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值n(不包括)之间均匀分布的 int 值。 Scanner scanner = new Scanner(System.in); System.out.println("请猜一个数字:"); int i = 0; int count = 0; while(i!=num){ i = scanner.nextInt(); count++; if (i>num){ System.out.println("猜大了"); }else{ System.out.println("猜小了"); } } System.out.println("恭喜正确,您一共猜了"+ count +"次!"); scanner.close();
4.2打印出1-100之间所有不是7的倍数和不包含7的数字,并求和

int num = 0; for (int i = 1; i <= 100; i++) { if(i%7 != 0 && i%10 != 7 && i/10 != 7){ num += i; } } System.out.println(num);

int num = 0; for (int i = 1; i <= 100; i++) { if(i%7 == 0 || i%10 == 7 || i/10 == 7){ continue; } num += i; } System.out.println(num);
4.3循环输入5个数,输完后显示这些数中有没有负数

int count = 0; int flag = 0;//立旗 Scanner scanner = new Scanner(System.in); System.out.println("请输入5个数字:"); while (count<5){ int num = scanner.nextInt(); if(num<0){ flag=1; } count++; } if(flag==0){ System.out.println("没有负数"); }else { System.out.println("有负数"); } scanner.close();
5、循环结构(下)
5.1有一个有钱的神经病,她往银行里存钱。第一天存1元,以后每天比前一天多存50%,完成下列计算任务
1)他存到第几天,当天存的钱会超过10元

double money = 1; int day = 1; while (money<10){ money *= 1.5; day++; } System.out.println("第" + day +"天超过10元");

double money = 1; int day =1; //day在for中定义是局部变量,不能在外部直接输出; for (;true;day++) { if(money>10){ break; } money *= 1.5; } System.out.println("第" + day +"天超过10元");

double money = 1; int day = 1; //使用if break的方式 while (true){ if(money>10){ break; } money *= 1.5; day++; } System.out.println("第" + day +"天超过10元");
2)一个月(30天)后他总共存了多少钱

double money = 1; double num = 0; for (int day = 1; day <= 30; day++) { num += money; System.out.println("day:"+day+",money:" + money); money *= 1.5; } System.out.println("一个月共存了" + money +"元");
5.2有一个400一圈的操场,一个人要跑10000米。第一圈50秒,其后每一圈都比前一圈慢1秒,按照这个规则计算跑完10000米需要多少秒

int time = 50; int round = 10000/400; int sum =0; for (int i = 1; i <= round; i++) { sum += time; time++; } System.out.println(sum);
5.3用户输入任意一个整数,求各位数之和

Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数"); int num = scanner.nextInt(); int sum = 0; while (num>0){ sum += num%10;//模10得到个位的数字 num = num/10;//除以10取整得到个位前面的数字 } System.out.println("各位数字之和为:" + sum);
5.4井里有一只蜗牛,他每天往上爬5米,晚上掉3.5米,井深56.7米。计算蜗牛需要多少天才能从井底爬出来。

int day = 1; double sum = 5; while (sum <= 56.7){ sum -= 3.5; day++; sum += 5; } System.out.println("需要" +day+ "天"); }

int day = 1; double sum = 0; while (true){ sum +=5; if(sum>56.7){ break; } sum -= 3.5; day++; } System.out.println(day);
6、循环嵌套
6.1求1-1000以内的质数列表。质数是只能被1和自身整除的整数

int i,j; int count=0; //思路:遍历测试从2-自身(包含)之间的因数,如果只有自身则说明是质数(如果这个因数小于自身,说明i有其它因数) for (i = 1; i <1000 ; i++) {//1不是质数,质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 for(j = 2;j<=i;j++){ if(i%j==0){//找因数 break; } } if(i==j){ System.out.print(i+"\t"); count++; } if(count == 10){ System.out.println(); count = 0; } }

//思路:遍历测试2-自身之间的数,如果没有因数说明i是质数(如果有因数,则说明i不是质数 int j; for (int i=1;i<150;i++){//1不是质数 for (j=2;j<i;j++){ if (i%j == 0){//找因数 break; } } if(j<i){ continue; } System.out.print(i+" "); }

//思路:遍历测试2-自身之间的数,如果没有因数说明i是质数(如果有因数,则说明i不是质数 outhor: for (int i=1;i<150;i++){//1不是质数 for (int j=2;j<i;j++){ if (i%j == 0){//找因数 continue outhor; } } System.out.print(i+" "); }
7、数组
7.1定义一个数组int[] nums={8,7,3,9,5,4,1} 输出数组中的最大值和它的下标

int[] nums = {8,7,3,9,5,4,1}; int max = nums[0]; int index = 0; //思路:遍历数组元素,与max比较 for (int i = 1; i < nums.length; i++) { if(nums[i]>max){ max=nums[i]; index = i; } } System.out.println("最大值是:"+max+",下标是:"+index);
7.2向一个长度为10的整型数组中 随机生成10个0-9的随机整数,完成下列任务:1)升序输出,降序输出 2)输出总和、平均数

int[] ints = new int[10]; Random random = new Random(); //生成数组 for (int i = 0; i < 10; i++) { ints[i] = random.nextInt(10); System.out.print(ints[i]+" "); } System.out.println(); //升序输出 int n; for (int j = 9; j > 0; j--) { for (int i = 0; i < j; i++) { if(ints[i+1]<ints[i]){ n = ints[i]; ints[i] = ints[i+1]; ints[i+1] = n; } } } for (int i = 0; i < 10; i++) { System.out.print(ints[i]+" "); } System.out.println(); //降序输出 for (int j = 9; j > 0; j--) { for (int i = 0; i < j; i++) { if(ints[i]<ints[i+1]){ n = ints[i]; ints[i] = ints[i+1]; ints[i+1] = n; } } } for (int i = 0; i < 10; i++) { System.out.print(ints[i]+" "); } //总和 平均数 System.out.println(); double sum=0; for (int i = 0; i < 10; i++) { sum += ints[i]; } System.out.print("数组元素的总和是:"+sum+",平均数是:"+sum/10);

//创建对象 Random ran = new Random(); int[] num = new int[10]; //生成数组 for (int i = 0; i < num.length; i++) { num[i] = ran.nextInt(10); } //使用sort方法排序 Arrays.sort(数组名,起始下标,终止下标); Arrays.sort(num); for (int i = 0; i < num.length; i++) { System.out.print(num[i] + " "); } System.out.println("------升序------"); //降序反向输出 for (int i = num.length - 1; i >= 0; i--) { System.out.print(num[i] + " "); } System.out.println("------降序------"); // 总和 平均数 int sum = 0; for (int i = 0; i < num.length; i++) { sum = num[i] + sum; } System.out.println("总和:" + sum); System.out.println("平均数:" + sum / num.length);
7.3向一个长度为5的整型数组中 生成5个1-10的随机整数。要求生成的数字中没有重复

int[] num = new int[5]; Random ran = new Random(); for (int i = 0; i < num.length; i++) { num[i] = ran.nextInt(10)+1;//元素获取随机数 //思路:新元素值与前面的元素遍历比较,如果相等,退回去重新生成随机数,再次遍历比较 for (int j = 0; j < i; j++) { if(num[i]==num[j]){ i--; break; } } } //foreach语法 遍历数组 访问集合中的元素 for (int x:num) { System.out.println(x); }
7.4向一个长度为10的整型数组中随机生成10个0-9的整数,完成下列任务。1)统计每个数字出现了多少次 2)输出出现次数最多的数字 3)输出只出现一次的数字中最小的数字

//创建对象,生成一个随机数组 int[] ints = new int[20]; Random random = new Random(); for (int i = 0; i < ints.length; i++) { ints[i] = random.nextInt(20); System.out.print(ints[i]+" "); } System.out.println(); //按照元素互相比较的方法进行统计的思路 int count = 0; int n = 0; int[][] numbs = new int[ints.length][2]; outhor: for (int i = 0; i < ints.length; i++) {//遍历ints[i]的元素 //左侧若有重复,则跳出循环遍历下一个元素 for (int j = i-1; j >= 0; j--) { if(ints[i]==ints[j]){ continue outhor; } } //右侧有重复,则计数累加,并输出数字 for (int j = i; j < ints.length; j++) { if(ints[i]==ints[j]){ count++; } } System.out.println("数字"+ints[i]+ "出现了"+count+"次,");//输出数字和出现次数 //用二维数组存储下每个数字及出现次数,数组有效长度为n,这里数字已无重复 numbs[n][0] = ints[i]; numbs[n][1] = count; n++; count = 0; } for (int i = 0; i < n; i++) { System.out.println(numbs[i][0] +"\t"+ numbs[i][1]+",");//查看二维数组 } //提取最大的计数值(出现次数) int maxc = 0; for (int i = 0; i < n; i++) { if(numbs[i][1]>maxc){ maxc = numbs[i][1]; } } //输出计数值(出现次数)为最多的所有数字 System.out.print("出现次数最多的数字是:"); for (int i = 0; i < n; i++) { if(numbs[i][1] == maxc){ System.out.print(numbs[i][0]+ " "); } } System.out.println(); //提取计数(出现次数)为1的数字,存储在数组中,数组有效长度为m int[] num =new int[n]; int m = 0; System.out.print("只出现一次的数字是:"); for (int i = 0; i < n; i++) { if(numbs[i][1] == 1) { System.out.print(numbs[i][0] + " "); num[m] = numbs[i][0]; m++; } } //输出最小数字 int min = num[0]; for (int i = 1; i < m; i++) { if(num[i]<min){ min = num[i]; } } System.out.println("其中最小的数字是:"+min);
2021-10-18
//即使再小的帆也能远航~~~