Java基础算法
i++;
++i;
i--;
--i;
int a=5;
int b=a++;++放在后面,表示先使用a的值,a再加1
b=5,a=a+1,a=6
int c=5;
int d=++c;++放在前面,表示先将c+1,再将值赋给d
c=c+1,c=6,d=c,d=6
基础算法
/*(挑战题)定义一个二维数组,int[3][4],要求是循环输入12个整数,放入到数组中,然后使用嵌套循环找到这个数组中的最大值。
*/
import java.util.*;
public class D{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[][] arr=new int[3][4];
for(int i=0;i<arr.length;i++){
System.out.println("请输入数");
for(int j=0;j<4;j++){
arr[i][j]=input.nextInt();
}
}
int max=arr[0][0];
for(int i=0;i<arr.length;i++){
for(int j=0;j<4;j++){
if(max<arr[i][j]){
max=arr[i][j];
}
}
}
System.out.print(max);
}
}
/*
6、(挑战题)定义一个长度为10的整型数组,循环输入10个整数。然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。
*/
import java.util.*;
public class C{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int sum=0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
sum++;
}
}
int[] brr=new int[sum];
int k=0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
brr[k]=arr[i];
k++;
}
}
for(int i=0;i<brr.length;i++){
System.out.println(brr[i]);
}
}
}
//判断一个数是否为质数(素数,只能被1和本身整除的数叫质数)
import java.util.*;
public class ZhiShu{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数");
int t=input.nextInt();//6
boolean flag=true;//假设这个数是质数
for(int i=2;i<t;i++){
if(t%i==0){
flag=false;
System.out.println(t+"不是质数");
break;
}
}
if(flag==true){
System.out.println(t+"是质数");
}
}
}
/*
3、定义一个二维数组,用来记录3个学生的java,c#,sql三门功课的成绩,二维数组的一行记录一个人的成绩,要求循环输入,最后输出格式如下:
java c# sql
第1名学生 89 79 98
第2名学生 99 80 100
第3名学生 79 99 87
*/
import java.util.*;
public class E{
public static void main(String[] args){
int[][] arr=new int[3][3];
Scanner input= new Scanner(System.in);
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个学生的java成绩");
arr[i][0]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的c#成绩");
arr[i][1]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的sql成绩");
arr[i][2]=input.nextInt();
}
System.out.println("\t\tjava\tc#\tsql");
for(int i=0;i<arr.length;i++){
System.out.print("第"+(i+1)+"个学生\t");
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
/*
3.(挑战题)计算1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10=?。
*/
public class C{
public static void main(String[] args){
double sum=0;
for(int i=1;i<=10;i++){
sum=sum+1/(double)i;
}
System.out.println(sum);
}
}
public class E{
public static void main(String[] args){
/*int i=1;
while(i<=100){
System.out.println(i);
i++;
}
*/
/*
do{
System.out.println(i);
i++;
}while(i<=100);
*/
for(int i=1;i<=100;i++){
System.out.println(i);
}
}
}
public class H{
public static void main(String[] args){
for(;;){
System.out.println("I love you");
}
}
}
/*
题目:从1不断的累加,最多加到100,但如果你的累加结果
正好大于1000时,要求也结束这个循环。问这个时候正好加
到了几。
*/
public class J{
public static void main(String[] args){
/*int i=1;
int sum=0;
while(i<=100){
sum=sum+i;
if(sum>1000){
System.out.println("加到了"+i);
break;
}
i++;
}*/
int sum=0;
for(int i=1;i<=100;i++){
sum=sum+i;
if(sum>1000){
System.out.println("加到了"+i);
break;
}
}
}
}
/*
从1累加到100,但如果要累加的数据能被3整除,
并且也能被7整数,那么就不要累加这个数。最后输出结果。
*/
public class C{
public static void main(String[] ars){
int sum=0;
for(int i=1;i<=100;i++){
if(i%3==0&&i%7==0){
continue;
}
sum=sum+i;
}
System.out.println(sum);
}
}
/*
*******
*******
*******
*******
*******
*/
public class F{
public static void main(String[] args){
for(int i=1;i<=5;i++){//i控制行数
for(int j=1;j<=7;j++){//j控制列数
System.out.print("*");
}
System.out.println();
}
}
}
/*
*
***
*****
*******
*********
***********
*************
*/
public class G{
public static void main(String[] args){
int x=1;//把第一行的星星数写出来
for(int i=1;i<=7;i++){//控制 行数
for(int j=1;j<=x;j++){//控制星星的列数
System.out.print("*");
}
System.out.println();//换行
x=x+2;//把下一行要打的星星的个数算出来
}
}
}
/*
*
*
*
*
*
*
*
*
*/
public class H{
public static void main(String[] args){
int k=0;
int x=1;
for(int i=1;i<=8;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k++;
}
}
}
/*
*
**
***
****
*****
******
*******
*/
public class I{
public static void main(String[] args){
int k=6;
int x=1;
for(int i=1;i<=7;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k--;
x++;
}
}
}
/*
*
***
*****
*******
*********
***********
*/
public class J{
public static void main(String[] args){
int k=5;
int x=1;
for(int i=1;i<=6;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k--;
x+=2;//x=x+2;
}
}
}
/*
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
……
1*9=9 2*9=18 …… 9*9=81
*/
public class K{
public static void main(String[] args){
//int x=1;
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
//x++;
}
}
}
/*
*
***
*****
*******
*********
***********
*********
*******
*****
***
*
*/
public class L{
public static void main(String[] args){
int k=5;
int x=1;
int kb=-1;
int xb=2;
for(int i=1;i<=11;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
System.out.print("*");
}
System.out.println();
k=k+kb;
x=x+xb;
if(i==5){
kb=-kb;
xb=-xb;
}
}
}
}
/*
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
*
*/
public class M{
public static void main(String[] args){
int k=5;
int x=1;
int kb=-1;
int xb=2;
for(int i=1;i<=11;i++){
for(int j=1;j<=k;j++){
System.out.print(" ");
}
for(int z=1;z<=x;z++){
if(z!=1&&z!=x){
System.out.print(" ");
continue;
}
System.out.print("*");
}
System.out.println();
k=k+kb;
x=x+xb;
if(i==5){
kb=-kb;
xb=-xb;
}
}
}
}
/*
******
******
******
******
*/
public class B{
public static void main(String[] args){
int k=3;//第一行的空格数
int x=6;//第一行的星星数
for(int i=1;i<=4;i++){//外层循环的i控制行数
for(int j=1;j<=k;j++){
System.out.print(" ");//打完一行的空格
}
for(int z=1;z<=x;z++){
System.out.print("*");//打完一行的星星
}
System.out.println();
k--;
}
}
}
/*
输入某人成绩(百分制)。如成绩在90-100之间,则输出优秀,如成绩在80-89之间,则输出良好,如成绩在60-79之间,则输出及格,60分以下则输出不及格。提示:用switch语句实现。
*/
import java.util.*;
public class D{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int a=input.nextInt();
int t=a/10;
switch(t){
case 10:
case 9:
System.out.println("优秀");
break;
case 8:
System.out.println("良好");
break;
case 7:
case 6:
System.out.println("及格");
break;
default:
System.out.println("不及格");
break;
}
}
}
/*
2.输入任意一个整数,判断这个整数是不是质数?
*/
import java.util.*;
public class Zhishu{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入1个整数");
int t=input.nextInt();
boolean flag=true;/*
for(int i=2;i<t;i++){
if(t%i==0){
flag=false;
System.out.println("这个数不是质数");
}
}
if(flag==true){
System.out.println("这个数是质数");
}
*/
/*int c=0;
for(int i=1;i<=t;i++){
if(t%i==0){
c++;
}
}
if(c==2){
System.out.println("这个数是质数");
}*/
int j;
for(j=2;j<=t/2;j++) {
if(t%j==0) {
break;
}
}
if (j>t/2) {
System.out.println(""+t+"是素数");
}
}
}
import java.util.*;
public class G{
public static void main(String[] args){
//int[] arr={10,3,6,20,5};
Scanner input=new Scanner(System.in);
int[] arr=new int[5];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int max=arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
}
System.out.println(max);
}
}
//判断一个数是否为质数(素数,只能被1和本身整除的数叫质数)
import java.util.*;
public class ZhiShu{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数");
int t=input.nextInt();//6
boolean flag=true;//假设这个数是质数
for(int i=2;i<t;i++){
if(t%i==0){
flag=false;
System.out.println(t+"不是质数");
break;
}
}
if(flag==true){
System.out.println(t+"是质数");
}
}
}
//求数组的最大值
import java.util.*;
public class C{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[3];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int max=arr[0];
int min=arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
if(min>arr[i]){
min=arr[i];
}
}
System.out.println("最大值是"+max);
System.out.println("最小值是"+min);
}
}
//查找算法
import java.util.*;
public class D{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
String[] names={"小红","小强","凤姐","春哥","马姐"};
System.out.println("请输入您要找的美女");
String name=input.next();
boolean flag=false;//假设找不到这个人
for(int i=0;i<names.length;i++){
if(name.equals(names[i])){
flag=true;
System.out.println("找到了,她在"+i+"号房间");
break;
}
}
if(flag==false){
System.out.println("没有这个人!");
}
}
}
/*
3、插入算法:要求有一个有序的数组,在这个有序的数组中
插入一个新的数据,要求插入后还是有序的。
示例:有一个数据int[] arr={3,8,10,15,21,33,0};现在要求
插入一个12的数据,最后要求还是有序的。
*/
import java.util.*;
public class E{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr={3,8,10,15,21,33,0};
System.out.println("请输入一个整数");
int a=input.nextInt();
arr[6]=a;
for(int i=arr.length-2;i>=0;i--){
if(arr[i]>arr[i+1]){
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}else{
break;
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
/*
3、插入算法:要求有一个有序的数组,在这个有序的数组中
插入一个新的数据,要求插入后还是有序的。
示例:有一个数据int[] arr={3,8,10,15,21,33,0};现在要求
插入一个12的数据,最后要求还是有序的。
*/
import java.util.*;
public class E{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr={3,8,10,15,21,33,0};
System.out.println("请输入一个整数");
int a=input.nextInt();
arr[6]=a;
for(int i=arr.length-2;i>=0;i--){
if(arr[i]>arr[i+1]){
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}else{
break;
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
/*
6、(挑战题)定义一个长度为10的整型数组,循环输入10个整数。然后判断这个数组中有几个偶数,再定义一个正好能存放这几个偶数的数组,将上一个数组中的所有偶数复制过来。最后循环输出这些偶数。
*/
import java.util.*;
public class C{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[10];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int sum=0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
sum++;
}
}
int[] brr=new int[sum];
int k=0;
for(int i=0;i<arr.length;i++){
if(arr[i]%2==0){
brr[k]=arr[i];
k++;
}
}
for(int i=0;i<brr.length;i++){
System.out.println(brr[i]);
}
}
}
/*
4、定义一个长度为6的整型数组,初始化为{6,9,10,15,20,0};的一个有序数列,现在再输入一个整数,插入到此数组中去。
*/
import java.util.*;
public class D{
public static void main(String[] args){
int[] arr={6,9,10,15,20,0};
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数");
int t=input.nextInt();
arr[arr.length-1]=t;
for(int i=arr.length-2;i>=0;i--){
if(arr[i]>arr[i+1]){
int temp;
temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}else{
break;
}
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
public class E{
public static void main(String[] args){
int[] arr={3,5,10,2,65};
int n=arr.length/2;//交换的次数
for(int i=0;i<n;i++){
//arr[0]---arr[4]交换 5-1-0
//arr[1]---arr[3]交换
int t;
t=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=t;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
import java.util.*;
//冒泡排序(就是多次把较大值往后移)
public class F{
public static void main(String[] args){
int[] arr={20,3,6,48,7,100,66};
for(int i=1;i<arr.length;i++){//i控制比较的轮数
for(int j=0;j<arr.length-1;j++){//j控制每一轮比较的次数
if(arr[j]>arr[j+1]){
int t;
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
//Arrays.sort(arr);
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
/*
11、声明一个整形的数组,循环输入5个整数,将这5个整数排序。
*/
import java.util.*;
//冒泡排序
public class A{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[5];
for(int i=0;i<arr.length;i++){
arr[i]=input.nextInt();
}
for(int i=1;i<arr.length;i++){//i控制比较的轮数
for(int j=0;j<arr.length-i;j++){//j控制每一轮比较的次数
if(arr[j]>arr[j+1]){
int temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
//给一个数组做反序。
public class B{
public static void main(String[] args){
int[] arr={222,333,555,777,888};
int n=arr.length/2;
for(int i=0;i<n;i++){
//arr[0]---arr[4]
int temp;
temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
import java.util.*;
//13、(挑战题)、求1-100以内所有的质数
public class C{
public static void main(String[] args){
for(int i=2;i<100;i++){
boolean flag=true;//假设这个数是质数
for(int j=2;j<i;j++){
if(i%j==0){
flag=false;
//System.out.println(i+"不是质数");
break;
}
}
if(flag==true){
System.out.println(i+"是质数");
}
}
}
}
/*声明一个二维数组,3行2列,循环输入6个人的成绩,并循环输出。*/
import java.util.*;
public class D{
public static void main(String[] args){
int[][] arr=new int[3][2];
Scanner input=new Scanner(System.in);
for(int i=0;i<arr.length;i++){
for(int j=0;j<2;j++){
System.out.println("请输入第"+i+"行,第"+j+"列的数");
arr[i][j]=input.nextInt();
}
}
for(int i=0;i<arr.length;i++){
for(int j=0;j<2;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
/*
3、定义一个二维数组,用来记录3个学生的java,c#,sql三门功课的成绩,二维数组的一行记录一个人的成绩,要求循环输入,最后输出格式如下:
java c# sql
第1名学生 89 79 98
第2名学生 99 80 100
第3名学生 79 99 87
*/
import java.util.*;
public class E{
public static void main(String[] args){
int[][] arr=new int[3][3];
Scanner input= new Scanner(System.in);
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个学生的java成绩");
arr[i][0]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的c#成绩");
arr[i][1]=input.nextInt();
System.out.println("请输入第"+(i+1)+"个学生的sql成绩");
arr[i][2]=input.nextInt();
}
System.out.println("\t\tjava\tc#\tsql");
for(int i=0;i<arr.length;i++){
System.out.print("第"+(i+1)+"个学生\t");
for(int j=0;j<3;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
/*
使用二维数组完成:要求使用循环。
1 0 0 0 0
1 1 0 0 0
1 2 1 0 0
1 3 3 1 0
1 4 6 4 1
*/
public class F{
public static void main(String[] args){
int[][] arr=new int[5][5];
for(int i=0;i<arr.length;i++){
arr[i][0]=1;
}
for(int i=1;i<arr.length;i++){
for(int j=1;j<5;j++){
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
for(int i=0;i<arr.length;i++){
for(int j=0;j<=i;j++){
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}
}
/*
给你一个整数4682,要求计算出它的千位,百位,十位,个位,并且打印出来。
千位 百位 十位 个位
4 6 8 2
*/
public class B{
public static void main(String[] args){
int t=4682;
int q=t/1000%10;
int b=t/100%10;
int s=t/10%10;
int g=t/1%10;
System.out.println("千位\t百位\t十位\t个位");
System.out.println(q+"\t"+b+"\t"+s+"\t"+g);
}
}
/*
声明两个空间a,b,a=6,b=8,要求将a与b的数据进行交换后,打印出来。
a的值是 b的值是
8 6
*/
public class I{
public static void main(String[] args){
int a=6;
int b=8;
int c;
c=a;
a=b;
b=c;
System.out.println("a的值是\tb的值是");
System.out.println(a+"\t"+b);
}
}
最大值
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[][] arr=new int[3][4];
for(int i=0;i<arr.length;i++){
System.out.println("请输入数");
for(int j=0;j<4;j++){
arr[i][j]=input.nextInt();
}
}
int max=arr[0][0];
for(int i=0;i<arr.length;i++){
for(int j=0;j<4;j++){
if(max<arr[i][j]){
max=arr[i][j];
}
}
}
System.out.print(max);
}
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] arr=new int[3];
for(int i=0;i<arr.length;i++){
System.out.println("请输入第"+(i+1)+"个整数");
arr[i]=input.nextInt();
}
int max=arr[0];
int min=arr[0];
for(int i=1;i<arr.length;i++){
if(max<arr[i]){
max=arr[i];
}
if(min>arr[i]){
min=arr[i];
}
}
System.out.println("最大值是"+max);
System.out.println("最小值是"+min);
}