Java基础练习题 day09
💞不定时更新
- 编写9*9乘法表
public class Practice01 {
public static void main(String[] args) {
for (int i = 1; i <=9; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
}
运行结果
- 星号打印三角形
public class Practice02 {
public static void main(String[] args) {
for (int i = 1; i <=4 ; i++) {
for (int j = 1; j < 5-i; j++) {
System.out.print(" ");
}
for (int j = 1; j <=(i*2-1); j++) {
System.out.print("*");
}
System.out.println();
}
}
}
运行结果
- 星号打印实心菱形
public class Practice03 {
public static void main(String[] args) {
for (int i = -4; i <=4 ; i++) {
for (int j = 1; j <=Math.abs(i); j++) {
System.out.print(" ");
}
for (int j = 1; j <=8-(Math.abs(i)*2-1) ; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
结果显示
- 星号打印空心菱形
public class Practice04 {
public static void main(String[] args) {
for (int i = -4; i <=4 ; i++) {
for (int j = 1; j <=Math.abs(i); j++) {
System.out.print(" ");
}
for (int j = 1; j <=8-(Math.abs(i)*2-1) ; j++) {
if(j==1||j==8-(Math.abs(i)*2-1)){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
结果显示
- 已知账号admin,密码123456,使用键盘录入账号密码完成登录验证流程,允许输错三次,三次后提示账号锁定
import java.util.Scanner;
public class Practice05 {
public static void main(String[] args) {
String username="admin";
String password="123456";
int num=0;
Scanner scan=new Scanner(System.in);
String name=null;
String pass=null;
for(;;){
System.out.print("请输入账户:");
name=scan.next();
System.out.print("请输入密码:");
pass=scan.next();
if(username.equals(name)&&password.equals(pass)){
System.out.println("登录成功!");
break;
}else{
System.out.println("账户或密码错误,请重新输入!");
num++;
if(num>=3){
System.out.println("抱歉,您已经错误三次,账户封锁一天!");
break;
}
}
}
}
}
结果显示
- 随机生成一个1~100整数,然后输入一个整数和生成的数字进行比对,猜大小并给予提示,猜对为止。
public class Practice06 {
public static void main(String[] args) {
Random R=new Random();
int num= R.nextInt(100)+1;
Scanner sc=new Scanner(System.in);
int guess;
int n=0;
for(;;){
System.out.print("请输入您猜的整数:");
guess=sc.nextInt();
n++;
if(guess>num){
System.out.println("亲,猜大了哟~,再试试");
}else if(guess<num){
System.out.println("亲,猜小了哟~,再试试");
}else{
System.out.println("恭喜你,猜对了!!正确数字为:"+num+",使用了"+n+"次就猜对了");
break;
}
}
}
}
显示结果
- 由键盘输入一个4位整数,求将该数反转以后的数,如原数为1234,反转后的数位4321
public class Practice07 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个整数:");
int num=scan.nextInt();
String s="";
while(num!=0){
int x=num%10;
num=num/10;
s=s+x;
}
System.out.println(s);
}
}
结果显示
8、编写要求:输入任意一个正整数,求出比这个正整数大的质数中最小的那个质数
package Demo;
import java.util.Scanner;
/*
* 输入一个数,判断距离此数最小的质数
* */
public class PrimeNum {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个数:");
int x=scan.nextInt();
x++;
for (int i = 2; i <x; i++) {
if (x % i == 0 ) {
x++;
i=2;
continue;
}
}
System.out.println(x);
}
}
9、编写要求:任意输入一个数,求其输入的正整数是多少位
public class Practice09 {
public static void main(String[] args) {
System.out.println("请输入:");
int num=new Scanner(System.in).nextInt();
int i;
for( i=1;(num=num/10)!=0;i++){
}
System.out.println(i);
}
}
10、编写:根据输入的数字,创建对应长度的数组,并随即赋值,提取Max和Min,再进行排序。
public class Practice06 {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.print("请输入要定义的数组长度:");
int[] numx=Shuzu(scan.nextInt(),new Random());
//冒泡法
Oderby(numx);
}
//冒泡排序
private static void Oderby(int[] numx) {
for (int i = 0; i < numx.length; i++) {
for (int j = i; j <numx.length ; j++) {
if(numx[i]<numx[j]){
numx[i]=numx[i]+numx[j];
numx[j]=numx[i]-numx[j];
numx[i]=numx[i]-numx[j];
}
}
}
System.out.print("排序后的数组:");
//输出数组
for (int i = 0; i <numx.length ; i++) {
System.out.print(numx[i]+"\t");
}
}
//生成数组并进行提取最大值和最小值
public static int[] Shuzu(int x,Random r){
int[] num=new int[x];
System.out.print("原数组:");
for (int i = 0; i < num.length; i++) {
num[i]=r.nextInt(100)+1;
System.out.print(num[i]+"\t");
}
System.out.println();
int max=num[1],min=num[1];
for (int i = 0; i <num.length ; i++) {
if(max<num[i]){
max=num[i];
}else if(min>num[i]){
min=num[i];
}
}System.out.println("最大值:Max="+max+",最小值:Min="+min);
return num;
}
}
11、编写要求:使用方法随即定义一个数组,进行选择排序
public class Oderby {
public static void main(String[] args) {
Scanner can=new Scanner(System.in);
System.out.println("请输入要创建的数组长度:");
Random R=new Random();
//创建显示数组
int[] num=Creat(can.nextInt(),R);
//选择排序
Order(num);
}
//创建数组
public static int[] Creat(int c,Random r){
String s="[";
int [] num=new int[c];
for (int i = 0; i < num.length; i++) {
num[i]=r.nextInt(100)+1;
if(i==num.length-1){
s=s+(num[i]+"]");
}else{
s=s+(num[i]+",");
}
}
System.out.print(s);
return num;
}
//选择排序
public static void Order(int[] num){
for (int i = 0; i < num.length-1; i++) {
int Min=i;
for (int j = i; j < num.length; j++) {
if(num[Min]>num[j]){
Min=j;
}
}
if(num[Min]!=num[i]){
num[Min]=num[i]^num[Min];
num[i]=num[i]^num[Min];
num[Min]=num[i]^num[Min];
}
}
System.out.println(Arrays.toString(num));
}
}
12、打印杨辉三角
方法一:
public class YanghuiTriangle {
public static void main(String[] args) {
//打印杨辉三角
System.out.println("请输入要创建的杨辉三角行数");
int num=new Scanner(System.in).nextInt()+1;
int[][] Triangle=new int[num][num];
for (int i = 0; i < Triangle.length; i++) {
//打印空格
for (int j = 0; j < Triangle.length-i; j++) {
System.out.print(" ");
}
for (int j = 0; j < i; j++) {
if(j==0||i==j){//外层为1
Triangle[i][j]=1;
}else{
Triangle[i][j]=Triangle[i-1][j]+Triangle[i-1][j-1];
}
System.out.print(Triangle[i][j]+" ");
}
System.out.println();
}
}
}
可以看出第六行输出位置有偏差,是因为10双位数的出现,导致与上面不协调
方法二:
public class Triangle {
public static void main(String[] args) {
int rows = 10;
for (int i = 0; i < rows; i++) {
int number = 1;
// 打印空格字符串
System.out.format("%" + (rows - i) * 2 + "s", "");
for (int j = 0; j <= i; j++) {
System.out.format("%4d", number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}
}
}
随机数公式:Math.random(Max - Min + 1) + Min
13、题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
public class WeiQ {
public static void main(String[] args) {
System.out.println("请输入人数:");
int people=new Scanner(System.in).nextInt();
boolean[] num=new boolean[people];
for (int i = 0; i <num.length; i++) {
num[i]=true;
}
int countPeople=people;//总人数
int cnum=0;//报数1,2,3,4
int index=0;//索引0,1,2,3
while(countPeople>1){//当总人数大于1
//对第一个人判断
if(num[index]){//当第一个人true时
cnum++;//报数+1
if(cnum%3==0){//当报数能被三整除,则人退出
//System.out.print(cnum);
countPeople--;//人-1;
num[index]=false;//此人false表示退出状态
cnum=0;//重新报数
// System.out.print(countPeople);
}
}
//下一个人
index++;//下一个人继续
if(index==people){//如果到最后一个人,即一圈,则再次进行下一圈
index=0;
}
}
System.out.println("最后剩一个人是:"+(index+1));
}
}