文章目录
一、Java基础算法1.一共有20级楼梯,每次可以上1级或2级,登上第20级一共有多少种上法。2.生成随机验证码(5位数,有数字,有大写字母,小写字母.3.彩票算法4.求出10000以内素数的和5.任意一个整数,请输出其各个位数的和。6.请输入10000以内所有的完数.7.实现任意数量的实心菱形和固定数量的实心菱形
一、Java基础算法
1.一共有20级楼梯,每次可以上1级或2级,登上第20级一共有多少种上法。
package com
.java
.demoTest
;
public class Test
{
static int f(int n
){
if (1 == n
){
return 1;
}
if (2 == n
){
return 2;
}
if (n
> 2){
return f(n
- 1) + f(n
- 2);
}
return f(0);
}
public
static void main(String
[] args
) {
int a
= f(20);
System
.out
.println(a
+"种方法");
}
}
2.生成随机验证码(5位数,有数字,有大写字母,小写字母.
package com
.java
.demoTest
;
import java
.util
.Random
;
public class Test2
{
public
static void main(String
[] args
) {
for (int i
= 0; i
< 1; i
++) {
System
.out
.println("随机验证码:"+code());
}
System
.out
.println("==========================");
Random random
= new
Random();
boolean
[] arr
= new boolean
[26];
boolean
[] brr
= new boolean
[10];
int type
;
char a
;
String b
= "";
int index
;
for (int i
= 0; i
< 5; i
++) {
type
= random
.nextInt(3);
if (type
== 0){
do {
index
= random
.nextInt(26);
a
= (char) (65 + index
);
}while (arr
[index
]);
arr
[index
] = true
;
}else if (type
== 1){
do {
index
= random
.nextInt(26);
a
= (char) (97 + index
);
}while (arr
[index
]);
arr
[index
] = true
;
}else {
do {
index
= random
.nextInt(10);
a
= (char) (48 + index
);
}while (brr
[index
]);
brr
[index
] = true
;
}
b
= b
+ a
;
}
System
.out
.println("验证码:"+b
);
}
public
static String
code() {
Random random
= new
Random();
String a
= "";
for (int i
= 0; i
< 5; i
++) {
int b
= random
.nextInt(3);
switch (b
){
case 0:
int code1
= random
.nextInt(10);
a
+= code1
;
break;
case 1:
char code2
= (char)(random
.nextInt(26)+65);
a
+= code2
;
break;
case 2:
char code3
= (char)(random
.nextInt(26)+97);
a
+= code3
;
break;
}
}
return a
;
}
}
3.彩票算法
package com
.java
.demoTest
;
import java
.util
.Arrays
;
import java
.util
.Random
;
import java
.util
.Scanner
;
public class Test3
{
public
static void main(String
[] args
) {
Random random
= new
Random();
int[] a
= new
int[3];
for (int i
= 0; i
< a
.length
; i
++) {
a
[i
] = random
.nextInt(10);
}
for (int j
: a
) {
System
.out
.print(j
+ "\t");
}
System
.out
.println();
Scanner scanner
= new
Scanner(System
.in
);
System
.out
.println("彩票两元一注,请问需要购买多少注。");
int n
= scanner
.nextInt();
System
.out
.println("你购买的彩票为" + n
+ "注,请付款" + 2 * n
+ "元!");
int[] b
= new
int[3];
for (int x
= 1; x
<= n
; x
++) {
System
.out
.println("请输入您购买的第" + x
+ "注彩票");
for (int z
= 0; z
< b
.length
; z
++) {
System
.out
.println("请输入您购买彩票的第" + (z
+ 1) + "个数字");
b
[z
] = scanner
.nextInt();
if (b
[z
] < 0 || b
[z
] >= 10) {
System
.out
.println("您输入的第" + (z
+ 1) + "个数字有误,请重新输入:");
z
--;
}
}
System
.out
.println("您购买的彩票如下:");
for (int y
= 0; y
< b
.length
; y
++) {
System
.out
.print(b
[y
] + " ");
}
System
.out
.println();
if (a
[0] == b
[0] && a
[1] == b
[1] && a
[2] == b
[2]) {
System
.out
.println("恭喜您,中大奖了。");
} else {
Arrays
.sort(a
);
Arrays
.sort(b
);
if (a
[0] == b
[0] && a
[1] == b
[1] && a
[2] == b
[2]) {
System
.out
.println("恭喜您,中小奖了。");
} else {
System
.out
.println("很遗憾,您没有中奖。");
}
}
}
}
}
4.求出10000以内素数的和
package com
.java
.demoTest
;
public class Test5
{
public
static void main(String
[] args
) {
int sum
= 0;
int count
= 0;
for (int i
= 2 ; i
<= 10000 ; i
++) {
boolean falg
= true
;
for (int j
= 2; j
< i
; j
++) {
if (i
% j
== 0){
falg
= false
;
break;
}
}
if(falg
){
count
++;
System
.out
.println(i
);
sum
+=i
;
}
}
System
.out
.println("10000以内有"+count
+"个质数");
System
.out
.println("10000以内质数的和为"+sum
);
}
}
5.任意一个整数,请输出其各个位数的和。
package com
.java
.demoTest
;
import java
.util
.Scanner
;
public class Test6
{
public
static void main(String
[] args
) {
Scanner scanner
= new
Scanner(System
.in
);
System
.out
.println("请输入一个整数:");
int a
= scanner
.nextInt();
int sum
= 0;
while(a
!= 0){
sum
= sum
+ a
% 10;
a
= a
/ 10;
}
System
.out
.println("各个位数的和为:"+sum
);
}
}
6.请输入10000以内所有的完数.
package com
.java
.demoTest
;
public class Test7
{
public
static void main(String
[] args
) {
int sum
= 0;
System
.out
.println("请输出10000以内所有的完数");
for (int i
= 1; i
<= 10000; i
++) {
for (int j
= 1; j
<= i
/2; j
++) {
if (i
% j
== 0){
sum
+=j
;
}
}
if (sum
== i
){
System
.out
.println(i
);
}
sum
= 0;
}
}
}
7.实现任意数量的实心菱形和固定数量的实心菱形
package com
.java
.demoTest
;
import java
.util
.Scanner
;
public class Test8
{
public
static void main(String
[] args
) {
Scanner input
= new
Scanner(System
.in
);
System
.out
.println("请输入要打印的菱形的行数:");
int a
= input
.nextInt();
for (int i
= 1; i
<= (a
+ 1) / 2 ; i
++) {
for (int j
= 1; j
<= 4 - i
; j
++) {
System
.out
.print(" ");
}
for (int k
= 1; k
<= 2 * i
- 1; k
++) {
System
.out
.print("*");
}
System
.out
.println();
}
for (int u
= 1; u
<= (a
- 1) / 2; u
++) {
for (int y
= 1; y
<= u
; y
++) {
System
.out
.print(" ");
}
for (int t
= 1; t
<= 2 * ((a
- 1) / 2 - u
) + 1; t
++) {
System
.out
.print("*");
}
System
.out
.println();
}
}
}
转载请注明原文地址: https://lol.8miu.com/read-14045.html