Java基础阶段的一些练习题,希望能有帮助
50L水,用7L桶装满,需要几次public class Test01 {
public static void main(String[] args) {
int i=0;//定义第一桶水量
int sum=0;//次数
while(i<50){
i+=7;
sum+=1;
}
System.out.println(sum);
}
}
输出1-100以内3的倍数或包含3的数3 69 12 13 …
public static void main(String[] args) {
//输出1-100以内3的倍数或包含3的数3 69 12 13 ...
int num=1;
while(num<100){
if(num%10==3||num/10%10==3||num%3==0){
System.out.print(num+"t");
}num+=1;
}
}
模拟取款
public static void main(String[] args) {
//取款功能
int pwd=123456,inp;int i=3;
do{
if (i==0) {
break;
}
Scanner sc=new Scanner(System.in);
System.out.println("输入密码:");
inp=sc.nextInt();
int money = 0;//放在if里,得不到数据
if(inp==pwd){
while(true) {
Scanner sc1 = new Scanner(System.in);
System.out.println("请选择功能:n1、查看余额n2、存款" +
"n3、取款n4、退出系统");
System.out.println("请输入");
int num = sc1.nextInt();
switch (num) {
case 1:
System.out.println("当前余额" + money);
break;
case 2:
System.out.println("请输入存款金额:");
Scanner sc2 = new Scanner(System.in);
int save_money = sc2.nextInt();
money += save_money;
System.out.println("存入金额:" + save_money +
"当前余额" + money);
break;
case 3:
System.out.println("请输入存款金额:");
Scanner sc3 = new Scanner(System.in);
int get_money = sc3.nextInt();
money -= get_money;
System.out.println("取出金额:" + get_money +
"当前余额" + money);
break;
default:
System.out.println("退出");
System.exit(0);//退出循环
break;
}
}
// return;//默认死循环
}else{
System.out.println("继续");
System.out.println("剩"+(i-1)+"次");
i--;
}
}while(pwd!=inp);
}
猜数游戏
public static void main(String[] args) {
//猜数游戏
//随机生成一个1-1000以内的数
// 让用户输入,判断是否正确
// 如果不正确,输出大了或小了
Random rd = new Random();
//random(1000):生成(0~1000]随机数
Scanner sc = new Scanner(System.in);
int num1 = rd.nextInt(1000);
// System.out.println("答案:"+num1);
System.out.println(num1);
int num;//输入的数
int i=0;//输入次数
do{
System.out.println("输入数字:");
num=sc.nextInt();
int a=0;//奖项
i++;
if(num==num1){
System.out.println("输入正确");
if(i==1)
{a=1;}
else if(i<=3&&i>1)
{a=2;}
else if(i<=10&&i>3)
{a=3;}
System.out.println("输入"+i+"次;"+a + "等奖");
}else{
System.out.println("输入错误,请重新输入:");
System.out.println(num > num1 ? "输入过大" : "输入过小");
}
}while(num!=num1);
}
输入一个数,输出到这个数之和以及这个数的阶来。
public static void main(String[] args) {
//输入一个数,输出到这个数之和以及这个数的阶来。
// 如输λ5, 输出总租: 15阶乘: 120
System.out.println("输入数字:");
Scanner sc=new Scanner(System.in);
int inp=sc.nextInt();
int sum=0,factorial=1;
while(1<=inp){
sum+=inp;
factorial*=inp;
inp--;
}
System.out.println(sum + "+" + factorial);
}
输入一个数,倒序输出:123456->654321
public static void main(String[] args) {
int num = 123456;
while(num>0){
System.out.print(num%10);
num=num/10;
}System.out.println();
}
假设一张纸厚0.02厘米,玉龙雪山高5596 千米,将纸对折几次后能达到雪山的高度
public static void main(String[] args) {
int h=559600000;
double h1=0.02;
int a=0;
while(h1
h1=h1*2;
a++;
}
System.out.println("第"+a+"次到达"+h1);
}
1~100所有质数的和
public static void main(String[] args) {
//1~100所有质数的和
int sum=0;//定义sum存储
for(int i =2;i<=100;i++){
//第一层循环:从2到100遍历
for(int j=2;j
if(i%j==0){
sum+=i;
}//第二层选比i小的数,由2开始i%j取余,满足整除条件则累加
}
}System.out.println(sum);
}
有1对兔子,长到第3个月开始每个月都生一对兔子,小兔子长到第3个月开始每个月都生一对兔子…请设计程序,输入第10个月多少对兔子?
public static void main(String[] args) {
int a=1,b=1,n=0;
for(int i=3;i<=10;i++){
n=a+b;
a=b;
b=n;
}
System.out.println(n);
}
大于200的最小质数
public static void main(String[] args) {
//大于200的最小质数
for (int x = 200; ; x++) {
// 如何判断一个数是不是质数
boolean flag = true; // 根据标记的状态是否改变,来判断某种情况是否发生
for (int m = 2; m <= x - 1; m++) {
if (x % m == 0) {
flag = false;
break;
}
}
}
if(flag){
System.out.println(x+"是质数");
break;
}
}
输出,(三位)水仙花数,如:153=111+555+333
public static void main(String[] args) {
//(三位)水仙花数:153=1*1*1+5*5*5+3*3*3
//math.pow(底数,幂次)
for(int i=100;i<1000;i++){//循环100~1000
if(i==((i%10)*(i%10)*(i%10)+
(i/10%10)*(i/10%10)*(i/10%10)+
(i/100%10)*(i/100%10)*(i/100%10))){
//满足条件打印
System.out.println(i);
}
}
}
鸡兔同笼
public static void main(String[] args) {
//鸡兔同笼:35头,94腿
for(int i=0;i<24;i++){
for(int j=0;j<47;j++){
if(i+j==35&&4*i+2*j==94){
System.out.println(i +"兔鸡"+ j);
}
}
}
}
百元百蛋: 鸡蛋3个1元 鸭蛋1个3元 鹅蛋1个5元
public static void main(String[] args) {
//百元百蛋 鸡蛋3个1元 鸭蛋1个3元 鹅蛋1个5元
//先确定第一层
//外层循环一次,内层循环所有
for(int a=0;a<=300;a+=3){
for(int b=0;b<=(100-a/3);b++){
for(int c=0;c<=(100-a/3-b*3);c++){
if (((a/3+b*3+c*5)==100&&(a+b+c)==100)){
System.out.println("鸡蛋:"+a+" 鸭蛋:"+b+"鹅蛋:"+c);
}
}
}
}
}
打印三角形、菱形
public static void main(String[] args) {
//外层循环行数
// 左上三角
for (int i = 1; i <= 5; i++) {
//内层循环每行打印的*的个数
for (int j = 1; j <= 2*i-1; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
//左下三角
for (int i = 1; i <= 5; i++) {
//内层循环每行打印的*的个数
for (int j = 1; j <= 11-2*i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
//右上三角形
for (int i = 1; i <= 5; i++) {
//内层循环每行打印的*的个数
for(int j=1;j<11-2*i;j++){
System.out.print(" ");
}
for (int k = 1; k <=2*i-1; k++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
//右下三角形
for (int i = 0; i < 5; i++) {
for (int j = 1; j
System.out.print(" ");
}
for (int k = 0; k <9-2*i; k++) {
System.out.print("*");
}System.out.println();
}
//菱形
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 10 - 2 * i; j++){
System.out.print(" ");
}
for (int k = 1; k <= 4 * i - 3; k++){
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= 2 * i; j++){
System.out.print(" ");
}
for (int k = 1; k <= 17 - 4 * i; k++){
System.out.print("*");
}
System.out.println();
}
}
完数:一个数恰好等于它的所有不同因子之和
public static void main(String[] args) {
//完数
for (int num = 1; num < 10000; num++) {
int sum=0;
for(int i=1;i
if (num % i == 0) {
sum+=i;
}
}
if(sum==num){
System.out.println("完数:"+num);
}
}
}
9*9乘法表
public static void main(String[] args) {
//9*9乘法表
for (int i = 1; i < 10; i++) {
//先输出1到9的乘积
for(int j=1;j<=i;j++){
System.out.print(i + "*" + j + "=" + (i*j)+"t");
}
System.out.println();
}
}
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,10天后剩下一个,问小猴子第一天共摘了多少个桃子
public static void main(String[] args) {
//定义第10天的桃子树梁
int a=1,sum=0;
for (int i = 1; i <10; i++) {
a=(a+1)*2;//在当天的基础上得到之前一天的量
}
System.out.println(a);
}
猜拳游戏 用户通过输入1 2 3 表示石头剪刀布,3局2胜制
public static void main(String[] args) {
//猜拳游戏 用户通过输入1 2 3 表示石头剪刀布,3局2胜制
Random rd = new Random();
Scanner sc = new Scanner(System.in);
// rd.nextInt(最大值);[0,最大值)
//用户和电脑赢的次数
int userWin = 0, comWin = 0;
//3次循环游戏
for (int i = 1; i <= 3; i++) {
//只要有一方赢2次停止循环
if (comWin == 2 || userWin == 2) {
break;
}
//接收用户输入
System.out.println("请第" + i + "次出拳:1.石头 2.剪刀 3.布");
int user = sc.nextInt();
//电脑出拳
int com = rd.nextInt(3) + 1;
//判断用户输入是否有误
if (user > 3 || user < 1) {
System.out.println("输入有误");
return;
}
//判断电脑出拳
switch (com) {
case 1:
if (user == 1) {
System.out.println("平局!!!");
} else if (user == 2) {
System.out.println("电脑出的是石头,你输了!!!");
comWin++;
} else {
System.out.println("电脑出的是石头,你赢了!!!");
userWin++;
}
break;
case 2:
if (user == 1) {
System.out.println("电脑出的是剪刀,你赢了!!!");
userWin++;
} else if (user == 2) {
System.out.println("平局!!!");
} else {
System.out.println("电脑出的是剪刀,你输了!!!");
comWin++;
}
break;
case 3:
if (user == 1) {
System.out.println("电脑出的是布,你输了!!!");
comWin++;
} else if (user == 2) {
System.out.println("电脑出的是布,你赢了!!!");
userWin++;
} else {
System.out.println("平局!!!");
}
break;
}
}
//最后比较分数
if (userWin >= 2) {
System.out.println("【你赢了】!!!");
} else if (comWin >= 2) {
System.out.println("【你输了】!!!");
}else{
System.out.println("【平局】!!!");
}
}
冒泡排序
public static void main(String[] args) {
//冒泡排序
int[] list = {23,16,98,10,2,31};
System.out.println("排序前:");
for (int i : list) {
System.out.print(i+"t");
}
System.out.println();
for (int i = 1; i <= list.length-1; i++) {
for (int j = 1; j <= list.length-i; j++) {
if (list[j-1]>list[j]){
//借助第三个变量交换元素
int temp = list[j];
list[j] = list[j-1];
list[j-1] = temp;
}
}
}
System.out.println("排序后:");
for (int i : list) {
System.out.print(i+"t");
}
}
23人报数1~23,数到3的人死,问最后一人在什么位置
public static void main(String[] args) {
//n是参与游戏的总人数
int n=23;
int[] persons = new int[n];
//创建1、2、3、4...n
for (int i = 1; i < persons.length; i++) {
persons[i - 1] = i;
}
int saveCount = 0;//目前数组中还存在的人数
int index = 0;//我们要进行报的数(123、123、123...)
while (true) {
saveCount = 0;//记录目前存活的人数每次循环都被初始化
for (int i = 0; i < persons.length; i++) {
if (persons[i] != -1) { //只有当前数组中不为-1的数才会去数数也就是index++
index++;
if (index == 3) {
index = 0;
//当计数器等于3的时候改变计数器的值并且把当前人的值改为-1
persons[i] = -1;
}
}
//如果数组中的值不为-1存活人数+1
if (persons[i] != -1) {
saveCount++;
}
}
//如果存活的人只剩下一个,退出循环
if (saveCount == 1) {
break;
}
}
for (int i = 1; i <= persons.length; i++) {
//遍历当前数组看哪一个位置的数组不为-1,就输出它的下标,也就是要找的那个人的编号
//这种方式你会发现假如那个人是最后一个时会将这个位置的值从n置为0(比如n = 2、20)
if (persons[i - 1] == i || persons[i - 1] == 0) {
System.out.println("第 " + i + " 个人活了下来");
}
}
}



