JAVA自学笔记(1)

JAVA入门级知识储备(一)

1.Scanner的欢乐接收

import java.util.Scanner;

public class first {
    public static void main(String[] args) {
        //扫描对象,用来扫描系统的输入
        Scanner input=new Scanner(System.in);//扫描仪的名称自定义,一般好记为input;
        /*各种类型如何输入
         * char a=input.next().charAt(0); //获得用户输入字符串中的第一个字符 
         * String a=input.next();//next() 不读入空格  nextLine()相反
         * int a=input.nextInt();
         * double a=input.nextDouble();
         * */
        System.out.println(a);
    }
}

 2.while循环里遇到浮点型陷入懵圈

import java.util.Scanner;

public class fist {
    public static void main(String[] args) {
        double sum=1;
        double item=1;
        while(item!=0){
            sum+=item;
            item-=0.1;
            System.out.println(item);
        }
        System.out.println(sum);
    }
}

!!!循环里不要使用浮点型来比较值是否相等;

使用Debug追踪 找到该程序的问题

3.活学现用,编一个计算器玩玩吧

package mycal;

import java.util.Scanner;

import javax.sql.rowset.CachedRowSet;

public class counter {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String op="";
        String ch=null;
        double result=0,num1,num2;
        do{
            System.out.println("请输入两个操作数");
            num1=input.nextDouble();
            num2=input.nextDouble();
            op=input.next();
            switch(op)
            {
            case "+":
                result = num1+num2;
                break; 
            case "-":
                result=num1-num2;
                break;
            case "*":
                result=num1*num2;
                break;
            case "/":
                if(num2==0)
                {
                    System.out.println("输入不合理!");
                    result=0;
                }
                else
                {
                result=num1/num2;    
                }
                break;
            case "%":
                result=num1%num2;
                break;
            default:
                System.out.println("输入的运算符不合理,运算失败!");
                result=0;
                break;
            }
            System.out.println(num1 +op+num2+"="+result);
            System.out.println("输入Y或者N");
            
            ch=input.next();
        }while("Y".equalsIgnoreCase(ch));
        System.out.println("运算结束!");
    }
}

 4.走进数组的世界

* 关于一维数组的声明,声明后要在堆内存中分配空间 。基本类型处理时,在栈内存中直接分配了空间(不需要手动分配) 。

  int[] nums=new int [5] //在堆内存中分配了5个int类型大小的空间 ,数组名即为新分配内存空间的首地址

* 关于一维数组的初始化,声明并初始化数组是不需要指明数组的大小

错误方式例如 int a[6]={0,1,2,3,4,5},int[6] a={0,1,2,3,4,5};

正确方式为 int a[]={0,1,2,3,4,5}//中括号在前在后都行

例题1.0 简单的数组题

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        //输入n名同学的成绩,求出平均分,以及总和并打印;
        int n=input.nextInt();
        double [] students=new double[5];
        double sum=0,ave=0;
        for(int i=0;i<students.length;i++)
        {
            students[i]=input.nextDouble();
            sum+=students[i];
        }
        ave=sum/n;
        System.out.println(sum+" "+ave);
    }
}

 数组题目 2.0(引入随机数的生成!)

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        //随机生成n个数,打印最大值和最小值;
        final int N=10;//常量N
        int n=input.nextInt();
        int nums[]=new int[N];
        for (int i = 0; i < n; i++) {
            nums[i]=(int)(Math.random()*1000)%1001;//0-1000之间的数
            System.out.print(nums[i]+" ");
        }
        System.out.print("
");
        int max=Integer.MIN_VALUE;
        int min=Integer.MAX_VALUE;
        for (int i = 0; i < n; i++) {
            if(nums[i]>max)
            {
                max=nums[i];
            }
            if(nums[i]<min)
            {
                min=nums[i];
            }
        }
        System.out.print("输出最大值"+max+"
"+"输出最小值"+min);
    }
}

    三种随机数生成的方式

 第一种:new Random()

  通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大。

 【PS:我们可以通过新建一个Random的对象来产生随机数,他可以产生随机整数、float、double、long型随机数】

 第二种:Math.random()

 通过Math.random()返回一个0到1之间的double值。

 【PS:这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的倍数来得到想要的效果,比如说乘以10,他就是个10以内的随机 数】

 第三种:currentTimeMillis() 

    通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。

 【PS:这个方法返回一个从1970年1月1号0点0分0秒到目前的一个毫秒数,返回类型是long,我们可以拿它作为一个随机数,拿它对一些数取 模,就可以得到我们想要的一些范围内随机数】 

 

数组3.0 排序大法!

round1 冒泡排序法

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        final int N=51;
        int [] nums=new int [N];
        int n,temp;
        Scanner input=new Scanner(System.in);
        n=input.nextInt();
        System.out.println("排序之前的数组!");
        for(int i=1;i<=n;i++)
        {
            nums[i]=(int)(Math.random()*1000)%1001;//0-1000随机数;
            System.out.print(nums[i]+" ");
        }
        System.out.println();
        for(int i=1;i<=n-1;i++)
        {
            for(int j=1;j<=n-i;j++)
            {
                if(nums[j]<nums[j+1])//升序的话大于号
                {
                    temp=nums[j];
                    nums[j]=nums[j+1];
                    nums[j+1]=temp;
                }
            }
        }
        System.out.println("请打印出排序后的数组!");
        for(int i=1;i<=n;i++)
        {
            System.out.print(nums[i]+" ");
        }
    }
}

 

round2 选择排序法

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        final int N=51;
        int [] nums=new int [N];
        int n,temp=0;
        Scanner input=new Scanner(System.in);
        n=input.nextInt();
        System.out.println("排序之前的数组!");
        for(int i=1;i<=n;i++)
        {
            nums[i]=(int)(Math.random()*1000)%1001;//0-1000;
            System.out.print(nums[i]+" ");
        }
        System.out.println();
        for(int i=1;i<=n-1;i++)
        {
            for(int j=i+1;j<=n;j++)
            {
                if(nums[i]<nums[j])//升序则为大于号
                {
                    temp=nums[j];
                    nums[j]=nums[i];
                    nums[i]=temp;
                }
            }
        }
        System.out.println("请打印出排序后的数组!");
        for(int i=1;i<=n;i++)
        {
            System.out.print(nums[i]+" ");
        }
    }
}

round3 sort 大法

import java.util.Arrays;

public class Main{
    public static void main(String[] args) {
        final int N=10;
        int [] nums=new int [N];;
        System.out.println("排序之前的数组!");
        for(int i=0;i<N;i++)
        {
            nums[i]=(int)(Math.random()*1000)%1001;//0-1000;
            System.out.print(nums[i]+" ");
        }
        System.out.println();
        Arrays.sort(nums);
        System.out.println("请打印出排序后的数组!");
        for(int i=0;i<N;i++)
        {
            System.out.print(nums[i]+" ");
        }
    }
}

 数组4.0 二分查找

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int searchnum;
        boolean isfind=false;
        int []nums={34,45,56,67,79};
        searchnum=input.nextInt();
        int left=0,right=nums.length-1,mid=0;
        while(left<=right)
        {
            mid=(left+right)/2;
            if(nums[mid]>searchnum) right=mid-1;
            else if(nums[mid]<searchnum) left=mid+1;
            else 
            {
                System.out.print("找到了!下标为"+mid);
                isfind=true;
                break;
            }
        }
        if(isfind==false) System.out.print("很遗憾,没有找到!");
    }
}

 

 

原文地址:https://www.cnblogs.com/mzq-/p/12881108.html