java基础题(2)
3.循环
3.1 数列求和
描述
有数列为:9,99,999,...,9999999999。要求使用程序计算此数列的和,并在控制台输出结果。(请尝试使用循环的方式生成这个数列并同时在循环中求和)
输入描述:
无
输出描述:
将该数列的和直接输出
public class Main { public static void main(String[] args) { //write your code here........ long sum = 0; long base = 9; //以9为基数 for(int i = 0; i < 10; i++){ //一共十个数字 sum += base; //累加数列 base = base * 10 + 9; //当前数列乘10加9就是下一个数列 } System.out.println(sum); } }
3.2 统计输入正数个数
描述
控制台输入整数,请设计一个死循环,当用户输入非正数时停止输入。请给出用户输入的正整数个数(默认输入个数不超过2147483647)
输入描述:
若干整数,整数之间用空格隔开
输出描述:
控制台输入的正整数个数
示例1
输入:1 2 3 4 5 6 7 0
输出:7
import java.util.*; public class Main { public static void main(String[] args) { int count = 0; Scanner scanner = new Scanner(System.in); //write your code here...... while(true){ if(scanner.nextInt()<=0)break; //判断数据类型 if(!scanner.hasNextInt())break; count++; } System.out.print(count); } }
3.3 求最小公倍数
描述
编写一个方法,该方法的返回值是两个不大于100的正整数的最小公倍数
输入描述:
两个int类型变量作为方法的参数
输出描述:
int类型的变量,值为两个数的最小公倍数
示例1
输入:3 7
输出:21
import java.util.*; public class Main { public static void main(String[] args) { Scanner console = new Scanner(System.in); int m = console.nextInt(); int n = console.nextInt(); int result = getCM(m, n); System.out.println(result); } public static int getCM(int m, int n){ //write your code here...... //计算m、n中较大者 int max=Math.max(m,n); //从max到m*n之间找最小公倍数 for(int i=max;i<=m*n;i++){ //如果既能被m整除又能被n整除,说明是最小公倍数,直接返回 if(i%m==0&&i%n==0){ return i; } } return -1; } }
3.4 小球走过路程计算
描述
一球从h米高度自由落下,每次落地后反弹回原高度的一半再落下,求它在第n次落地时共经过了多少米?第n次反弹多高?
输入描述:
输入小球的初始高度和落地的次数(先输入小球初始高度再输入反弹次数)
输出描述:
输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开,且结果保留三位小数)
示例1
输入:100 3
输出:12.500 250.000
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); // 下落的高度和落地的次数 float h=scanner.nextFloat(); int n =scanner.nextInt(); float dis = 0; for(int i = 0; i < n; i++){ dis += h; //每次加上落下来的距离 h /= 2; //弹起距离缩短一半 if(i == n - 1){ System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", dis)); } dis += h; //弹上去走的距离 } } }
3.5 求平均数
描述
键盘输入任意多个10000以内正整数(负数代表结束),求出它们的平均数,
输入描述:
任意多个正整数
输出描述:
它们的平均数(平均数为double类型,保留两位小数)
示例1
输入:12 23 32 43 -1
输出:27.50
import java.util.Scanner; public class Main { public static void main(String[] args) { //标准输入 Scanner scan = new Scanner(System.in); //计数 int cnt=0; //记录平均数 double avg=0; //记录累加和 double sum=0; while(scan.hasNext()){ int num=scan.nextInt(); //如果小于0,直接终止循环 if(num<0){ break; } //累加和加上对应num sum+=num; //计数加一 cnt++; } //计算平均数 avg=sum/cnt; System.out.println(String.format("%.2f",avg)); } }
3.6 判断质数
描述
请补全预设代码中判断质数的方法。
输入描述:
一个大于1的整数
输出描述:
true/false
示例1
输入:2
输出:true
示例2
输入:9
输出:false
import java.util.Scanner; public class stu { public static void main(String[] args) { stu main = new stu(); Scanner scan = new Scanner(System.in); int number = scan.nextInt(); System.out.println(main.isPrimeNumber(number)); } public Boolean isPrimeNumber(int number) { //write your code here...... for(int i=2; i<number; i++) { if(number%i == 0) { return false; } } return true; } }
3.7计算整数位数
描述
输入一个整数,计算它的位数。如果输入的整数不大于0则输出这个数
输入描述:
一个整数
输出描述:
整数的位数
示例1:
输入:9999; 输出:4;
示例2
输入:0;输出:0;
示例3:
输入:-1; 输出:-1;
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num = scan.nextInt(); scan.close(); //write code here...... 法①://使用 +"" 可以将整数转换为字符串 if(num<=0){ System.out.print(num); else System.out.print((num+"").length()); 法②: //如果小于等于0,直接输出 if(num<=0){ System.out.println(num); } //记录整数位数 int cnt=0; while(num>0){ //每消耗一个位置,位数加一 cnt++; num/=10; } System.out.println(cnt); } } }
4.数组
4.1数组遍历
描述
将用户输入的六个数字填入数组并找出数组中最大值和最小值
输入描述:
随机输入的6个整数
输出描述:
输出数组中的最大值,最小值(最大值最小值之间用空格隔开。若有多个最大值或最小值,输出一次即可)
import java.util.Scanner; public class Main { public static void main(String[] args) { int[] ary = new int[6]; int max; int min; Scanner scanner = new Scanner(System.in); for (int i = 0; i <ary.length ; i++) { ary[i]=scanner.nextInt(); } //write your code here...... max=ary[1];//把数组的第一个数作为初始化的数字 min=ary[1]; for(int i=0;i<ary.length;i++){ max=Math.max(ary[i],max); min=Math.min(ary[i],min); } System.out.println(max+" "+min); } }
4.2数组倒转
描述
输入6个整数,先将其输出然后再将数组倒转,再次输出数组
输入描述:
用户随机输入的6个int类型变量
输出描述:
先输出用户输入顺序的数组(这一步预设代码已给出)
再输出反转后的数组(输出格式为Arrays.toString(arr),参考预设代码中的输出格式)
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { int[] arr = new int[6]; Scanner scanner = new Scanner(System.in); for (int i = 0; i < arr.length; i++) { arr[i] = scanner.nextInt(); } System.out.println(Arrays.toString(arr)); //write your code here...... int left = 0, right = arr.length - 1; //双指针从首尾开始 while(left < right){ int temp = arr[left]; //交换指针元素 arr[left] = arr[right]; arr[right] = temp; left++; //指针向中间靠 right--; } System.out.println(Arrays.toString(arr)); } }
4.3二维数组求和
描述
给定一个二维数组,请你编写一个求和函数,计算出这个数组元素的和
输入描述:
无
输出描述:
输出二维数组元素的和
public class Main { public static void main(String[] args) { int[][] arr = {{11,33,55},{22,44,66,88},{131,214,315,146},{928,827,726,625},{424,525}}; int sum=add(arr); System.out.println(sum); } public static int add(int[][] arr) { int sum=0; for(int i = 0; i < arr.length; i++){ //遍历行数小于数组维度大小 for(int j = 0; j < arr[i].length; j++) //每行列数等于该行的数组大小 sum += arr[i][j]; //累加 } return sum; } }
浙公网安备 33010602011771号