最近对java的练习做了一些,然后进行了整理,留下以后可以看看,现在的代码肯定比较臃肿,以后望能做出修改。。
// 猜一个1~1000的数字,有十次机会,可以继续游戏。
public class Cai {
static int num = (int) (Math.random() * 1000);
static int n=0; //次数
static String y;
static Scanner scan=new Scanner(System.in);
public static void Secret(){
System.out.println("请输入一个1~1000的值:");
int x;
do{
x=scan.nextInt();
while(x<1 ||x>1000)
{
System.out.println("输入有误,请重新输入!");
x=scan.nextInt();
}
if(num<x){
System.out.println("大了点,再猜!");
n++;
}else if(num>x){
System.out.println("小了点,再猜!");
n++;
}else{
System.out.println("您猜对了!");
n++;
break;
}
}while(n<=9);
System.out.println("这个数字是"+num);
System.out.println("你猜的次数是"+n);
System.out.println("猜数字游戏结束,是否继续?(y/n)");
y=scan.next();
}
public static void main(String[] args) {
Secret();
do{
n=0;
Secret();
}
while(y==y);
System.out.println("再见");
}
}
//输入一个四位数然后将其逆输出
import java.util.Scanner;
public class Ni {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个4位数:");
int x=0;
x=scan.nextInt();
int a,b,c,d;
a=x/1000;
b=(x-1000*a)/100;
c=(x-1000*a)%100/10;
d=(x-1000*a)%10;
int ar[]=new int[4];
ar[0]=a;
ar[1]=b;
ar[2]=c;
ar[3]=d;
int i,j,t,k;
for ( i = 0; i < 4; i++) {
k = i;
for ( j = i + 1; j < 4; j++) {
if (ar[j] < ar[k]) {
k = j;
}
}
if (k > i) {
int tmp = ar[i];
ar[i] = ar[k];
ar[k] = tmp;
}
}
for(k=0;k<=3;k++){
System.out.print(ar[k]);
}
}
}
//求两个数的最小公约数和最小公倍数。
import java.util.Scanner;
public class GongYue {//辗转相除法求公约数
public static int gongyue(int a,int b){
int gy=0;
if(a<b)
{
a=a+b;
b=a-b;
a=a-b;
}
if(a%b==0)
{
gy= b;
}
while(a % b>0)
{
a=a%b;
if(a<b)
{
a=a+b;
b=a-b;
a=a-b;
}
if(a%b==0)
{
gy = b;
}
}
return gy;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入两个数字:");
int a,b;
a=scan.nextInt();
b=scan.nextInt();
int n=gongyue(a,b);
System.out.println("a和b的最大公约数为:"+n);
System.out.println("a和b的最小公倍数为:"+(a*b)/n);
}
}
//求100~200的素数
public class Sushu {
public static void main(String[] args) {
System.out.println("100~200素数有:");
int j = 0;
boolean z=false;
for(j=100;j<=200;j++){
int k=(int)Math.sqrt(j);
int i=0;
for(i=2;i<=k;++i)
{
if(j%i==0 )
break;
}
if(i>k)
System.out.println(j);
}
}
}
//定义一个初始值是2的一维整型数组,用户输入一个值,将该值插入到数组恰当的位置(该数组是按照从小到大进行排序的)。
public static int[]Insert(int str[],int x){
if(str.length==1){
int ar[]=new int[str.length+1];
if(str[0]>x){
ar[0]=x;
ar[1]=str[0];
return ar;
}else{
ar[0]=str[0];
ar[1]=x;
return ar;
}
}else{
int i,j,k = 0;
for ( i = 0; i <str.length; i++) {
k = i;
for ( j = i + 1; j <str.length; j++) {
if (str[j] < str[k]) {
k = j;
}
}
if (k > i) {
int tmp = str[i];
str[i] = str[k];
str[k] = tmp;
}
}
int []ar=new int[str.length+1];
for(i=0;i<str.length;i++){
if(str[i]>x){
k=i;
break;
}
}
for(j=0;j<k;j++){
ar[j]=str[j];
}
ar[k]=x;
for(j=k;j<ar.length-1;j++){
ar[j+1]=str[j];
}
return ar;
}
}
public static void main(String[] args) {
int[] str=new int[]{2};
Scanner scan=new Scanner(System.in);
System.out.println("请输入需要插入数组的数字:");
int x=0;
boolean b=true;
while(b){
try{
x=scan.nextInt();//如果输入的不是数字,则会抛出异常,进去catch语句块
b=false;
}
catch(Exception e){
System.out.println("输入错误,请重新输入:");
scan.nextLine(); //需要读入回车符,确保循环正常实行
}
}
int[]arr=Insert(str,x);
System.out.println(Arrays.toString(arr));
}
}
//定义一个整型数组arr={1,3,4,2,6,2,6,2,8,2,6};里面还有重复项,将该数组中重复出现的整数只保留一个,其余的删除。
public static int[] Move(int []str){
int len=str.length;
for(int i=0;i<len;i++){
for(int j=i+1;j<len;j++){
if(str[j]==str[i]){
for(int k=j+1;k<len;k++){
str[k-1]=str[k];
len--;
}
}
}
}
str=Arrays.copyOf(str, len);
return str;
}
public static void main(String[] args) {
int[]str=new int[]{1,3,4,2,6,2,6,2,8,2,6};
int[]arr=Move(str);
System.out.println(Arrays.toString(arr));
}
public static boolean find(int[][] str, int number) { //查找数组中的数
if (str == null || str.length < 1 || str[0].length < 1) {
return false;
}
int rows = str.length;
int cols = str[1].length;
int row = 0;
int col = cols - 1;
while (row >= 0 && row < rows && col >= 0 && col < cols) {
if (str[row][col] == number) {
return true;
} else if (str[row][col] > number) {
col--;
} else {
row++;
}
}
return false;
}
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3, 4},
{2, 3, 4, 5},
{3, 4, 5, 6},
{4, 5, 6, 7}};
System.out.println(find(matrix, 5));
}
public static void printOfNum(int[][]str){ //顺时针打印矩阵
int x=0;
int y=0;
while(x*2<str.length &&y*2<str[0].length){
printOfWays(str,x,y);
x++;
y++;
}
}
public static void printOfWays(int[][] str,int x,int y){
int rows=str.length;
int cols=str[0].length;
for(int i=y;i<cols-y-1;i++){
System.out.print(str[x][i]+" ");
}
if(rows-x-1>x){ //rows-x-1是最后一行的行号,意思为大于1才输出右边
for(int i=x+1;i<=rows-x-1;i++){
System.out.print(str[i][cols-y-1]+" ");
}
}
if(rows-x-1>x && cols-1-y>y){ //cols-1-y是最右边的的列,只有高度和宽度都大于1才输出下边
for(int i=cols-y-2;i>=y;i--){
System.out.print(str[rows-1-x][i]+" ");
}
}
if(cols-1-y>y && rows-1-x>x+1){ //宽度大于1高度大于2才能输出
for(int i=rows-2-x;i>=x+1;i--){
System.out.print(str[i][y]+" ");
}
}
}
public static void main(String[] args) {
int [][]str=new int[][]{{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}};
printOfNum(str);
System.out.println();
}
public static void main(String[] args) { //二维数组打印菱形
Scanner scan=new Scanner(System.in);
System.out.println("请输入菱形的高度:");
int h=scan.nextInt();
char[][]str= new char[3*h][3*h];
for(int i=0;i<h;i++){
for(int j=0;j<=h-i-1;j++){
str[i][j]=' ';
}for(int k=0;k<2*i+1;k++){
str[i][h-i+k]='*';
}
System.out.println();
}
for(int i=0;i<h;i++){
for(int j=0;j<=i+1;j++){
str[h+i][j]=' ';
}for(int k=0;k<2*(h-i-2)+1;k++){
str[h+i][i+2+k]='*';
}
}
for(int i=0;i<str.length;i++){
for(int j=0;j<str[i].length;j++){
System.out.print(str[i][j]);
}
System.out.println();
}
}
}
//循环报数游戏,有n个人,每一个人编号从1开始,依次编号到n。从1到3报数,报3的退出游戏,得出最后获胜人的编号
函数原型:
public static void CyclicGame(int num){
boolean[]str=new boolean[num];
for(int i=0;i<num;i++){
str[i]=true;
}
int index = 0;
int count = 0;
int n=num;
while(n > 1)
{
if(str[index] == true)
{
count++;
if(count == 3) //当count等于3时,就淘汰一个;
{
str[index] = false;
n--; //当有一个被淘汰时,n--;
count = 0;
}
}
index++; //当从0循环到n时,重新置index为0;
if(index == num)
{
index = 0;
}
}
for(int i=0; i<num; i++)
{
if(str[i] == true){
System.out.println(i+1);;
}
}
}
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入要参加游戏的人数:");
int n=scan.nextInt();
CyclicGame(n);
}
//自定义MyArrayList类
public class MyArrayList {
static int[] arr;
static int size=0;//有效数据个数
public static void InitMyArrayList(){
arr=new int[1];
size=0;
}
public static void add(int num){
int len=arr.length;
for(int i=0;i<len;i++){
if(arr[i]==0){
arr[i]=num;
size++;
break;
}
if(arr[len-1]!=0 && i==len-1){
arr=Arrays.copyOf(arr, len+1);
arr[len]=num;
size++;
}
}
}
/*
* 删除尾巴
*/
public static void delTail(){
int len=arr.length;
if(arr[len-1]!=0){
size--;
}
arr=Arrays.copyOf(arr, len-1);
}
public static void delHead(){
for(int i=0;i<arr.length-1;i++){
arr[i]=arr[i+1];
}
arr=Arrays.copyOf(arr, arr.length-1);
size--;
}
/*
* 查找一个数并返回它的下标
*/
public static int search(int num){
for(int i=0;i<arr.length;i++){
if(arr[i]==num){
return i;
}
}
return -1;
}
/*
* 删除数字number
*/
public static boolean del(int number){
int n=search(number);
if(n==-1){
return false;
}
for(int i=n;i<arr.length-1;i++){
arr[n]=arr[n+1];
}
arr=Arrays.copyOf(arr,arr.length-1);
size--;
return true;
}
/*
* 当前src->aim
*/
public static boolean change(int src,int aim){
int n=search(src);
if(n==-1){
return false;
}
arr[n]=aim;
return true;
}
public static void show(){
System.out.println(Arrays.toString(arr));
System.out.println("有效数字个数为:"+size);
}
public static void main(String[] args) {
InitMyArrayList();
add(9);
add(10);
del(9);
add(9);
change(9,8);
show();
}
}
以上就是近期的练习了,望自己继续加油。