1.回文数判断
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a1;
while(in.hasNext())//循环输入
{
a1=in.nextInt();
int x=a1;
int b,c=0;
int num=0;
while(x>0)
{
b=x%10;
x/=10;
c=(c*10)+b;//核心思想是:翻转原数,看原数和翻转后的数是否相等
}
if(c==a1)
System.out.println(true);
else
System.out.println(false);
}
}
}
2.不用*/%符号实现整除功能,输出余数
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a1;
while(in.hasNext())//循环输入
{
a1=in.nextInt();
int a2=in.nextInt();
int sum=0;
if(a1<a2)//如果被除数比除数小,整除结果为0
{
System.out.println(0);
continue;
}
else if(a2==0)//如果除数为0,整除无法进行,错误
{
System.out.println(false);
continue;
}
//下面是正常情况
while(a1>0)
{
a1-=a2;//让被除数一直减除数,
sum++;//看看共能减几次,这就是除法的原理
if(a1-a2<0)//因为循环需要进行完才能判断,因此在中间就加上判断条件,否则求不了余数
{//余数是a1<a2的情况,有很多种表达形式
System.out.println("余数:"+a1);
break;
}
}
System.out.println("整除倍数:"+sum);
}
}
}
3.百内逢7过
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
//一百个数里,逢七过
for(int i=1;i<=100;i++)
{
int flag=0;//加一个标识,逢七的时候flag=1,节省代码
int num=i;//要对i进行运算,因此不如新定义一个变量
//第一种情况,这个数刚好被7整除
if(num%7==0) {
flag = 1;
}
else//第二种情况,数里含有7
{
while(num>0)
{
if(num%10==7)
{
flag=1;
}
num/=10;
}
}
if(flag==0)
System.out.printf("%d\t",i);
else
System.out.printf("过\t");
if(i%10==0)//每十个数换一次行
System.out.println();
//如何实现每隔一秒执行一次输出?
}
}
}
4.一百以内猜数的大小,给十次机会,有提示
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
Random r=new Random();//创建一个随机数
for (int i = 0; i < 10; i++) {
int num=r.nextInt(10,100);
//random出来的数,括号里范围是[x,y),单个数就是[0,y)
System.out.println("猜猜这个数是几");
int number=in.nextInt();
if(num>number)
System.out.println("猜小了,你还有"+(10-i)+"次机会");
else if(num<number)
System.out.println("猜大了,你还有"+(10-i)+"次机会");
else
{
System.out.println("猜对了!!!!!!!!");
break;
}
//异常处理??输入一个非整数,如何处理?
}
System.out.println("游戏结束");
}
}
5.方法:复制数组返回
import java.util.*;
public class Main{
//数组复制,方法调用,可见传递数组的值要传递地址(引用类型传递值)
//常见的int这些非引用类型,要传递值
public static int[] copyOfRange(int[] arr,int from,int to)
{
int b[]=new int[to-from];
int j=0;
for (int i = from; i < to; i++,j++) {
b[j]=arr[i];
}
return b;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a[]=new int[]{1,2,3,4,5,6,7,8,9,10};
int copy[]=copyOfRange(a,3,7);
for (int i = 0; i < copy.length; i++) {
System.out.println(copy[i]);
}
}
}
6.方法:值传递
import java.util.*;
public class Main{
//基本数据类型,方法传递参数传递的是真实数据,需要返回值
public static void Change(int num)
{
num=200;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num=in.nextInt();
Change(num);
System.out.println(num);
}
}
import java.util.*;
public class Main{
//引用数据类型,方法传递参数传递的是地址,不需要返回值
public static void Change(int a[])
{
a[0]=10;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a[]=new int[]{1,2,3};
Change(a);
System.out.println(a[0]);
}
}
7.随机生成五位验证码:四位大小写字母+一位数字
import java.util.*;
public class Main{
public static String Yanma()
{
//抽签默认用数组,先构建一个数组库,然后用random随机数
String s="";
char a[]=new char[52];//这是存放前四位字母的数组库,涵盖26个大写和26个小写字母
for (int i = 0; i < a.length; i++) {
if(i<26)//前26个存小写
a[i]=(char)('a'+i);
else//后26个存大写
a[i]=(char)('A'+i-26);
}
Random r=new Random();
for (int i = 0; i < 4; i++) {
int ranr=r.nextInt(0,51);
s+=a[ranr];//共调用四次循环,随机抽取四个可重复的字母
}
int rana=r.nextInt(10);//抽取一个数字
s+=rana;//字符串默认自后端添加元素
return s;
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
String a=Yanma();
System.out.println(a);
}
}
}
8.随机抽奖,不可重复
import java.util.*;
public class Main{
public static void main(String[] args) {
//Scanner in=new Scanner(System.in);
//设定奖项
int a[]=new int[]{2,588,888,1000,10000};
//随机数
Random r=new Random();
int i = 0;
//五个奖项抽五次
while(i < a.length) {
int ran=r.nextInt(5);//生成随机数
if(a[ran]>0)//判断条件为:如果奖金没有被修改过值
{
System.out.println(a[ran]+"元的奖金被抽出");
a[ran]=-1;//修改奖金为负数,让它不可被第二次输出
i++;//在if语句里加i,如果抽不到不重复的就不增加
}
}
}
}
补充一下:还有一个方法,就是通过交换a[i]和a[ran]也可以得到随机数列
9.双色球:33个红球中有6个中奖号码,16个蓝球中有1个中奖号码,请你买6个红球,1个蓝球,看看中奖情况
红球个数 | 蓝球个数 | 奖金 |
1 | 1 | 5 |
2 | 0 | 5 |
2 | 1 | 5 |
3 | 0 | 10 |
3 | 1 | 10 |
4 | 0 | 10 |
4 | 1 | 200 |
5 | 0 | 200 |
5 | 1 | 3000 |
6 | 0 | 500万 |
6 | 1 | 1000万 |
import java.util.*;
public class Main {
public static void Flag(int bluego,int redgo)
{
int money=0;
int flag=0;
if(bluego==0)
{
switch (redgo)
{
case 4:
{
money=10;
break;
}
case 5:
{
money=200;
break;
}
case 6:
{
money=500;
flag=1;
break;
}
default:
break;
}
}
else
{
switch (redgo)
{
case 0,1,2:
{
money=5;
break;
}
case 3:
{
money=10;
break;
}
case 4:
{
money=200;
break;
}
case 5:
{
money=3000;
break;
}
case 6:
{
money=1000;
flag=1;
break;
}
default:
break;
}
}
if(money==0)
System.out.println("很遗憾,你没中奖");
else
{
if(flag==1)
System.out.println("恭喜你,中了最高"+money+"万元");
else
System.out.println("恭喜你,中了"+money+"元");
}
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
Random r=new Random();
int red[]=new int[34];//红色球有33个,从一号开始数
int blue[]=new int[17];//蓝色球有16个,从一号开始数
Arrays.fill(red,0);
Arrays.fill(blue,0);//数组全部为0,表示没中奖的号码
for (int i = 0; i < 6; i++) {
int ran=r.nextInt(1,34);
//随机让6个红球号码为1,表示中奖号码
red[ran]=1;
if(i==0)
{//随机让1个蓝球号码为1,表示中奖号码
int ram=r.nextInt(1,17);
blue[ram]=1;
}
}
//用户输入中奖号码
int redgo=0,bluego=0;//中奖的个数
System.out.println("请输入你买的6个红色号码");
for (int i = 1; i <=6; i++) {
int rednum=in.nextInt();
if(red[rednum]==1)//如果输入的号码对应的数组元素为1,表示中奖
redgo++;//记录红球中奖数目
}
System.out.println("请输入你买的1个蓝色号码");
int bluenum=in.nextInt();
if(blue[bluenum]==1)
bluego++;//记录蓝球中奖数目
//判断中奖情况
Flag(bluego,redgo);
}
}