循环
JAVA12 小球走过路程计算
描述
一球从h米高度自由落下,每次落地后反弹回原高度的一半再落下,求它在第n次落地时共经过了多少米?第n次反弹多高?
输入描述:
输入小球的初始高度和落地的次数(先输入小球初始高度再输入反弹次数)
输出描述:
输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开)
示例1
输入:
100 3
输出:
12.500 250.000
备注:
结果保留三位小数,保留方式已经写在预设方法备注中
ublic static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
float h=scanner.nextFloat();
int n =scanner.nextInt();
double sum=0.00;
for (int i = 1; i <=n ; i++) {
if (i==1){
sum+=h;
h=h/2;
}else{
sum+=2*h;
h=h/2;
}
}
System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", sum));
}
}
JAVA13 求平均数
描述
键盘输入任意多个10000以内正整数(负数代表结束),求出它们的平均数,
输入描述:
任意多个正整数
输出描述:
它们的平均数(平均数为double类型,保留两位小数)
示例1
输入:
12 23 32 43 -1
输出:
27.50
备注:
输出格式与保留两位小数的方法已经写在预设代码注解中
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num;
double sum=0.00;
int a=0;
while (true){
num=scan.nextInt();
if (num<0)
break;
a++;
sum += num;
}
scan.close();
if (a>0){
double avg =(double) sum / a;
System.out.println(String.format("%.2f",avg));
}}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n=0,i=0;
double s=0;
while((n=scan.nextInt())>=0){
s=s+n;
i++;
}
System.out.println(String.format("%.2f",s/i));
}
JAVA14 判断质数
描述
请补全预设代码中判断质数的方法。
输入描述:
一个大于1的整数
输出描述:
true/false
示例1
输入:
2
输出:
true
示例2
输入:
9
输出:
false
public static void main(String[] args) {
Main main = new Main();
Scanner scan = new Scanner(System.in);
int number = scan.nextInt();
System.out.println(main.isPrimeNumber(number));
}
public Boolean isPrimeNumber(int number) {
if(number==2||number==3){
return true;
}
for(int i=3;i<number;i++){
if(number%i==0){
return false;
}
}
return true;
}
}
JAVA15 计算整数位数
描述
输入一个整数,计算它的位数。如果输入的整数不大于0则输出这个数
输入描述:
一个整数
输出描述:
整数的位数
示例1
输入:
9999
输出:
4
示例2
输入:
0
输出:
0
示例3
输入:
-1
输出:
-1
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
scan.close();
if(num<=0){
System.out.println(num);
}
int c=0;
while (num>0){
c++;
num/=10;
}
System.out.println(c);
}
}
数组
JAVA16 数组遍历
描述
将用户输入的六个数字填入数组并找出数组中最大值和最小值
输入描述:
随机输入的6个整数
输出描述:
输出数组中的最大值,最小值(最大值最小值之间用空格隔开。若有多个最大值或最小值,输出一次即可,如样例2所示)
示例1
输入:
1 3 5 2 4 6
输出:
6 1
示例2
输入:
1 1 2 3 4 4
输出:
4 1
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();
}
max = ary[0];
min = ary[0];
int length = ary.length;
for(int i=1;i<length;i++){
if(ary[i] > max){
max = ary[i];
}
if(ary[i] < min){
min = ary[i];
}
}
System.out.println(max+" "+min);
}
}
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();
}
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);
}
}
JAVA17 数组倒转
描述
输入6个整数,先将其输出然后再将数组倒转,再次输出数组
输入描述:
用户随机输入的6个int类型变量
输出描述:
先输出用户输入顺序的数组(这一步预设代码已给出)
再输出反转后的数组(输出格式为Arrays.toString(arr),参考预设代码中的输出格式)
示例1
输入:
52 10 37 40 60 83
输出:
[52, 10, 37, 40, 60, 83]
[83, 60, 40, 37, 10, 52]
一种解法
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 length = arr.length;//数组的长度
int len = length/2;//数组的中间索引下标
int temp = 0;
//遍历数组的前半部分,将前半部分与后半部分互换
for(int i=0;i<len;i++){//数组倒置
temp = arr[i];
arr[i] = arr[length-1-i];
arr[length-1-i] = temp;
}
System.out.println(Arrays.toString(arr));
}
}
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));
for(int i=0; i < arr.length/2; i++){//数组头尾互换数字,所以到中间就行
int a=arr.length-i-1;//数组尾巴的地址
int j=arr[i];//将数组前面的数组暂时存在变量J中
arr[i]=arr[a];//开始互换
arr[a]=j;
}
System.out.println(Arrays.toString(arr));
}
}