难度跟我们之前的练习完全不是一个等级的,请耐心思考。你有信心搞定吗?
1. 对两个整数变量的值进行互换,请写出三种实现方式
a) 提示:数学运算,位运算,第三方变量
2. 设计一个方法来计算 n+(n-1)+(n-2)+....+3+2+1的值
注意:其中n的值由用户输入,
例如:如果输入的数是8,则计算8+7+6+5+4+3+2+1的值,计算结果应该是36
代码如下:
import java.util.Scanner; public class leiJia2{ public static int leiJia(int n){ int sum = 0; for(int i=1;i<=n;i++){ sum += i; } return sum; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.println("请输入n的值"); int n = sc.nextInt(); int result = leiJia(n); System.out.println(result); } } |
3. 计算一个三位数的正整数各位数的和
问题:编写一个程序,让用户输入一个三位数的正整数值,然后计算该数各位数的和,
例如:如果输入的数是123,则计算结果是6
扩展:3-9位666 18 6666666 42
代码如下:
import java.util.Scanner; public class sanHe{ public static void main(String[] args){ System.out.println("请输入一个三位正整数"); Scanner sc = new Scanner(System.in); int shu = sc.nextInt(); int sum = 0; int a1,a2,a3; a1 = shu%10; a2 = shu/10%10; a3 = shu/100; sum = a1 + a2 +a3; System.out.println("这个三位数各位数字之和为:"+ sum); } } |
扩展的代码如下:
import java.util.Scanner; public class duoHe3{ public static void main(String[] args){ System.out.println("请输入一个三到九位的正整数"); Scanner sc = new Scanner(System.in); int shu = sc.nextInt(); System.out.println("这个数各位数字之和为:"+ duoHe(shu)); } public static int duoHe(int shu){ int sum = 0; while(shu>0){ sum = sum+shu%10; shu = shu/10; } return sum; } } |
4. 根据要求显示数字信息
问题:编写一个程序,用于接收用户输入的正整数,然后显示从0到该数为止表示的所有数字,比如输入11,则显示0,1,2,3,4,5,6,7,8,9,10,11
注意,输出的数字信息,是一行输出,并且用“,”连接,如上所述
输出完毕之后,再询问用户是否再次继续输入其他数字再玩一遍?“y”是继续,其他为退出。
代码如下:
import java.util.Scanner; public class lieShu4{ public static void main(String[] args){ lieShu(); } public static void lieShu(){ System.out.println("请输入一个正整数"); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println("显示从0到该数为止表示的所有数字为:"); System.out.print(0); for(int i = 1;i<=n;i++){ System.out.print(","+i); } System.out.println(); System.out.println("是否再次继续输入其他数字再玩一遍?“y”是继续,其他为退出。"); String playAgain = sc.next(); if(playAgain.equals("y")){ lieShu(); }else { return; } } } /* import java.util.Scanner; Scanner input = new Scanner(System.in); int n; String isContinue; do{ System.out.println("请输入一个数字:"); n = input.nextInt(); showNum(n); System.out.println("是否继续玩,输入y继续玩,其他退出:"); isContinue = input.next(); }while(isContinue.equals("y") || isContinue.equals("Y")); System.out.println("OVER"); } public static void showNum(int n){ for(int i=0;i<n;i++){ System.out.print(i+","); } System.out.print(n); System.out.println(); } }*/ |
5. 编写一个程序,根据输入某个班级学员的成绩,计算该班级学员的平均成绩,班级的人数要求用户输入,根据输入的人数,分别录入学员的成绩,计算该班级学员的平均成绩,并显示计算结果
比如录入的班级人数为10,那么你就可以分别录入10个学员的成绩,并计算其平均分
代码如下:
import java.util.Scanner; public class Average{ public static void main(String[] args){ System.out.println("请输入班级人数:"); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int sum = 0; int score; for(int i = 1;i<=n;i++){ System.out.println("请输入第"+i+"学员的成绩:"); score = sc.nextInt(); sum += score; } double average = sum/n; System.out.println("平均分为"+average); } } |
6. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
注意:a是取1-9之间的数字,由用户来录入决定,具体要几个数相加也是由用户来决定,例如上述的例子,如果用户录入的分别是2和5,则就是上面的计算结果,2+22+222+2222+22222
代码如下:
import java.util.Scanner; public class Test6{ public static void main(String[] args){ int sum = 0; Scanner sc = new Scanner(System.in); System.out.println("请输入a的值:"); int a = sc.nextInt(); System.out.println("请输入n的值:"); int n = sc.nextInt(); int[] arr = new int[n]; arr[0] = a; for(int i = 1;i<=n-1;i++){ arr[i] = arr[i-1]+10*arr[i-1]; } for(int j : arr){ sum += j; } System.out.println("这些数的和为:"+ sum); } } |
7. 得到10个1至20之间的随机数,要求不能重复,并将这10个数装入到数组中(提示:遇到重复的,则不存放到数组中,继续随机获取下一个数)
代码如下:
public class Random10{ public static boolean isExits(int[] arr,int key){ for(int j=0;j<=arr.length-1;j++){ if(key == arr[j]){ return true; } } return false; } public static void main(String[] args){ int a; int[] arr = new int[10]; for(int i = 0;i<=arr.length-1;i++){ do{ a = (int)(Math.random()*20)+1; }while(isExits(arr,a)); arr[i] = a; } for(int j : arr){ System.out.print(j+" "); } } } |
public class Random10ss{
public static void main(String[] args){
int[] result = new int[10];
int count = 0;
while(count < 10) {
int num = (int) (Math.random() * 20) + 1;
boolean flag = true;
for (int j = 0; j <=count; j++) {
if(num == result[j]){
flag = false;
break;
}
}
if(flag){
result[count] = num;
count++;
}
}
for(int i :result){
System.out.print(i+" ");
}
}
}
或
public class Random10s{
public static void main(String[] args){
int a;
int[] arr = new int[10];
for(int i = 0;i<=arr.length-1;i++){
a = (int)(Math.random()*20)+1;
for(int j=0;j<=i;j++){
if(a == arr[j]){
j = -1;
a = (int)(Math.random()*20)+1;
}
}
arr[i] = a;
}
for(int j : arr){
System.out.print(j+" ");
}
}
}