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("很遗憾,没有找到!");
}
}