1 计算100以内所有奇数的和
@Test
public void test() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
if (i % 2 != 0) {// 奇数
sum += i;
}
}
System.out.println(sum);
}
2 判断一个数是不是素数
@Test
public void primeTest() {
int n = 37;
boolean f = false;
for (int i = 2; i < n; i++) {
/*
* 如果 不是素数 ,f变为真,break直接跳出去执行下一步,f是true;
* 122次除完,都不等于0,那就是素数,也跳出去,f还是false;
*/
if(n%i==0) {//能等于0,就不是素数
System.out.println(i);
f=true;
break;//
}
}
/*
* 执行这一步,f为真或者为假
*/
if (f) {
System.out.println(n + "不是素数");
} else {
System.out.println(n + "是素数");
}
}
3 累乘
@Test
public void facTest() {
int s = 1;
for(int i=1;i<=4;i++) {//运行四次
s*=i ;
}
System.out.println(s);
}
4 数列
@Test
public void fibTest() {
int a = 1;
int b = 1;//要用草稿本,画出来就能做出来
for(int i=1;i<=18;i++) {//打印斐波拉契数列前十八项
int c = a+b;
System.out.println(c);
a=b;
b=c;
}
}
5 递归
@Test
public void test3() {
int a = 1;
int b = 1;
for(int i=1;i<=18;i++) {
int c = a+b;
System.out.println(b+"/"+c);
a=b;
b=c;
}
}
6 输入年月日,计算是那一年的第几天
@Test
public void daytest4() {
Scanner sc = new Scanner (System.in);
System.out.print("输入年:");
int year = sc.nextInt();
System.out.print("输入月:");
int mouth = sc.nextInt();
System.out.print("输入日:");
int day= sc.nextInt();
int m = mouth;
int sum = 0;
/*
* 用switch把每个月多少天列出来,用for把个个月天数加起来
*/
for(int i=1;i<m;i++){
switch(i){
case 1:
sum+=31;
break;
case 2:
sum+=28;
break;
case 3:
sum+=31;
break;
case 4:
sum+=30;
break;
case 5:
sum+=31;
break;
case 6:
sum+=30;
break;
case 7:
sum+=31;
break;
case 8:
sum+=31;
break;
case 9:
sum+=30;
break;
case 10:
sum+=31;
break;
case 11:
sum+=30;
break;
}
}
/*
* 如果是闰年,并且大于二月,就给总数加一天,闰年只有二月比平年多一天
*/
if(m>2&&(year%400==0 || year %4==0 && year%100 != 0)) {
sum+=1;
}
System.out.println(sum+day);
}
7 做一个简易用户登陆系统(验证码、密码)
@Test
public void testWhileLogin() {
final String LOGIN_USERNAME = "admin";
final String LOGIN_PASSWORD = "123";
final int LOGIN_MAX_TIMES = 3;
Scanner sc = new Scanner(System.in);
int count = 1;
boolean flag = false;//让flag开始为假
do {
System.out.println("用户名:");
String username = sc.nextLine();
System.out.println("密码:");
String password = sc.nextLine();
/*
* 验证码模块
*/
Random ran = new Random();
boolean f = true;
while(f) {
int i = 0;
String yanzhen = "";
while(i<4) {
char ch = (char) (ran.nextInt('z'-'0')+'0');
yanzhen += ch;
i++;
}
// String yanzhen = ran.nextInt(9000) + 1000+"";//设置1000-9999的四位数验证码,后面加双引号转化为string类型
System.out.println("验证码:" + yanzhen);
System.out.print("请输入验证码:");
String useryanzhen = sc.nextLine();
if(yanzhen.equals(useryanzhen)) {
f = false;//当验证码输入正确时,退出循环
}else {
System.out.println("验证码输入错误");
}
}
count++;
/*
* 判断用户名,密码是否正确
*/
if(LOGIN_USERNAME.equals(username) && LOGIN_PASSWORD.equals(password)) {
flag = true;
break;
}else {
System.out.println(new Date() + "用户以用户名"+username+"尝试登录");//Date引包引第二个util.Date
System.out.println("用户名|密码错误");
int leftTimes = (LOGIN_MAX_TIMES-count);
if(leftTimes>0) {
System.out.println("还剩"+(LOGIN_MAX_TIMES-count)+"次机会");
}else {
System.out.println("对不起,您今天的登录次数已经耗尽");
}
}
count++;
}while(count<=3);
if (flag) {
System.out.println(new Date() + ",欢迎用户:" + LOGIN_USERNAME + "登录成功");
}else {
System.out.println("\"登录出错\"已经超过今天的最大次数");
}
sc.close();
}
private int nextInt(int i) {
// TODO Auto-generated method stub
return 0;
}
/**
* 尝试输出一个随机的字符串
*/
@Test
public void testRandom() {
final Random RAN = new Random();
String str = "";
int count = 0;
while (count < 4) {
char ch = (char) (RAN.nextInt('z' - '0') + '0');// 单引号 'z'是一个数字;(char)意思是强转成char型
str += ch;// ""+'a'-->"a"重复了四次,字符串里面才可以放四个字母 ,所以要把ch变成字符串
count++;
}
System.out.println(str);
}
8 三角形
8.1 直角三角形
/**
* @
* @@
* @@@
* @@@@
* @@@@@直角三角形
*/
@Test
public void testTriang01() {
for (int n = 1; n <= 5; n++) {// 当i从1开始,条件都要加=!!!表示打印五层
for (int i = 1; i <= n; i++) {// i<=n重要!!!意思是n层;i<=n表示是第几层就打印几个@!!!
System.out.print("@");
}
System.out.println();// 换行
}
}
直角三角形
/**
* @
* @@
* @@@
*/
@Test
public void testTriang02() {
for (int n = 1; n < 5; n++) {
for (int b = 1; b < 5 - n; b++) {// 理解b<5-n,n代表层数
System.out.print(" ");
}
for (int i = 1; i <= n; i++) {// i<=n重要!!!意思是n层;
System.out.print("@");
}
System.out.println();// 换行
}
}
8.2 正方形
/**
*@@@@@
*@@@@@
*@@@@@
*@@@@@
*@@@@@
* 正方形
*/
@Test
public void testTriang05() {
for (int n = 1; n <= 5; n++) {//打印5层
for (int i = 1; i <= 5; i++) {// i<=n改成i<=5就从三角变成了正方形;
System.out.print("@");
}
System.out.println();// 换行
}
}
8.3 99乘法表
@Test
public void testNineTimesNine() {
final int SIZE = 9;
for (int n = 1; n <= SIZE; n++) {
for (int b = 1; b <= SIZE - n; b++) {// 理解b<5-n,n代表层数
System.out.print("");
}
/*
* 下面的for,意思第几层就打印几列@号
*/
for (int i = 1; i <= n; i++) {// i<=n重要!!!意思是n层;
System.out.print(i + "×" + n + "=" + (i * n) + "\t");// print(),打印出来的@不换行
}
System.out.println();// 换行
}
}
8.4 实心/空心等腰三角形
实心
/**
* 实心等腰三角形!!!!!!!
*/
@Test // 别老是忘test!!
public void DengYaoTest() {
for (int n = 1; n <= 5; n++) {
/*
* 此for,负责每行空几个空格后开始打印“@”
*/
for (int b = 1; b <= 5 - n; b++) {// (b<=5-n)的意思是,循环四次、三次、两次、一次 ! ! !
System.out.print(" ");// 打印空格:双引号里面给个空格
}
/*
* 此for,负责打印每行的@
*/
for (int i = 1; i <= 2 * n - 1; i++) {
System.out.print("@");
}
System.out.println();
}
}
空心
/**
* 空心等腰三角形
*/
@Test // 别老是忘test!!
public void DengYaoTest2() {
final int SIZE = 5;
for (int h = 1; h <= SIZE; h++) {
for (int b = 1; b <= SIZE - h; b++) {
System.out.print(" ");// 打印空格:双引号里面给个空格
}
for (int i = 1; i <= 2 * h - 1; i++) {
if (h == SIZE || i == 1 || i == 2 * h - 1) {// 关键i==1每一层的第一个,i==2*h-1每一层的第二个;
System.out.print(".");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
8.5 空心菱形
/**
* 空心菱形
*/
@Test // 别老是忘test!!
public void DengYaoTest3() {
final int SIZE = 3;
for (int h = 1; h <= SIZE; h++) {
for (int b = 1; b <= SIZE - h + 1; b++) {
System.out.print(" ");// 打印空格:双引号里面给个空格
}
for (int i = 1; i <= 2 * h - 1; i++) {
if (i == 1 || i == 2 * h - 1) {// 关键i==1每一层的第一个,i==2*h-1每一层的第二个;
System.out.print(".");
} else {
System.out.print(" ");
}
}
System.out.println();
}
/*
* 把上面的空心三角形倒过来
*/
final int SIZEe = 4;
for (int h = 4; 0 <= h; h--) {
for (int b = 1; b <= SIZEe - h; b++) {
System.out.print(" ");// 打印空格:双引号里面给个空格
}
for (int i = 1; i <= 2 * h - 1; i++) {
if (i == 1 || i == 2 * h - 1) {// 关键i==1每一层的第一个,i==2*h-1每一层的第二个;
System.out.print(".");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
8.6 空心等腰三角形 圣诞树
@Test // 别老是忘test!!
public void treeTest() {
final int SIZE = 5;
for (int h = 1; h <= SIZE; h++) {
for (int b = 1; b <= SIZE - h; b++) {
System.out.print(" ");// 打印空格:双引号里面给个空格
}
for (int i = 1; i <= 2 * h - 1; i++) {
if (h == SIZE || i == 1 || i == 2 * h - 1) {// 关键i==1每一层的第一个,i==2*h-1每一层的第二个;
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
/*
* 树干部分
*/
// final int SIZEE = 6;
// for (int y = 1; y <= SIZEE; y++) {
// for (int b = 1; b <= 3; b++) {
// System.out.print(" ");
// }
// for (int i = 1; i <= 3; i++) {
// System.out.print("|");
// }
// System.out.println();
// }//不加灯笼
/*
* 树干,加灯笼
*/
for(int y = 1;y<=4;y++) {//四层树干
//System.out.print(" ");//三个空格
for(int b=1; b<=9;b++) {
if((y==1 && b==2) ||( y==1 && b==8)) {// y==1判断是不是第一行,b==2让在第二列打印灯笼
System.out.print("$");
}else if (b<=6 && b>=4) {//第4到6列打印
System.out.print("|");
}else {//
System.out.print(" ");
}
}
System.out.println();
}
}
9 死循环案例
while死循环
/**
* while死循环
* @throws InterruptedException
*/
@Test
public void loopTest() throws InterruptedException {
boolean f = true;//用f=true不会报错,
while(f) {//判断循环
// System.out.println("循环体");
System.out.println(new Date());
Thread.sleep(1000);
}//循环结束
System.out.println("while循环结束...");
}
for死循环
/**
* for死循环
*/
@Test
public void testLoop () {
// for( ; ; ){
//
// }
int i = 0;
for( ; i<0;i++ ) {
}
System.out.println("结束");
}
10 水仙花数
/**
* 水仙花数
*/
@Test
public void test1() {
for (int i = 100; i < 1000; i++) {
int a = i / 100;// 百位
int b = i / 10 % 10;// 十位
int c = i % 10;// 个位
if (a * a * a + b * b * b + c * c * c == i) {
System.out.println(i);
}
}
}
11 十进制转二进制(用while循环,因为你不知道要运行多少次)
@Test
public void test2() {
int n = 13;// 把13转换为二进制
while (n >= 2) {// n等于1的时候跳出循环
int m = n % 2;// 取余
n = n / 2;// 替换
System.out.print(m);// 打印出来是 倒叙 的二进制
}
System.out.print(n);
}
12 最大公约数,最小公倍数
@Test
public void testGongYue() {
int a = 15;
int b = 25;
if(a>b) {
a=a^b;
b=a^b;
a=a^b;
}
for(int i=a;i>1;i--) {
if(a%i==0 && b%i==0) {
System.out.println("最大公约数"+i);
System.out.println("最小公倍数"+a*b/i);
break;
}
}
13 辗转相除法
@Test
public void GongYueTest() {
int a = 25;
int b = 45;
while (true) {
int m = a%b;//25 a=45 b=25 ; m= 20 a=25 b=20; b= 5 a=20 ;
if(m==0) {
System.out.println(b);
break;
}
a = b;
b = m;
}
}
20211113、20211114