一,简单计算器的实现:
package practice;
//简单计算器的实现
import java.util.Scanner;
public class demo1 {
public int jia(int x,int y){
return x+y;
}
public int jian(int x,int y){
if(x>y){
return x-y;
}else{
return -(y-x);
}
}
public int cheng(int x,int y){
return x*y;
}
public int div(int x,int y){
if(y==0){
System.out.println("对不起,除数不能为零!");
return 0;
}else{
return x/y;
}
}
public static void main(String[]args){
Scanner input=new Scanner(System.in);
demo1 de=new demo1();
int result=0;
boolean isFlage=false;
while(true){
isFlage=true;
System.out.println("欢迎使用-----简单计算器-----------");
System.out.print("请您输入第一个要操作的数:");
int x=input.nextInt();
System.out.print("请您输入第二个要操作的数:");
int y=input.nextInt();
System.out.print("请您输入运算符:+,-,*,/,(y退出操作)");
char yusuan=input.next().charAt(0);//我就说怎么调用的是第一个,因为,还是将运算符没有操作进去导致的
switch(yusuan){
case '+':
System.out.println(de.jia(x,y));//这边的调用方法有一点问题,哦哦,粗心了,全部调用的是这种方法
isFlage=false;
break;
case '-':
System.out.println(de.jian(x,y));
isFlage=false;
break;
case '*':
System.out.println(de.cheng(x,y));
isFlage=false;
break;
case '/':
System.out.println(de.div(x,y));
isFlage=false;
break;
case 'Y':
isFlage=false;
break;
default:
System.out.println("对不起,您输入的有误!");
}
}
}
}
运行结果:还是比较满意的!
2
二:数组的内存
首先,数据类型是分为两大类,一个是八大基本数据类型,一个是引用数据类型,
栈内存中,装的是基本数据类型的值和引用数据类型的地址,而在堆内存当中,存储的是引用数据类型的值,栈内存先进后出,自下而上的存储,方法执行完毕,自动释放空间;而堆内存中,使用new创建的对象,堆内存中不会自动释放空间,需要垃圾回收器来回收,接下来,用赋地址的代码来说明
package practice;
//赋地址的操作,建立一个数组,给他具体的值,建立一个空数组,确定好他的长度,将
//建立好的数组中的值赋值给空的数据!并画出具体的内存示意图
public class demo2 {
public static void main(String[]args){
int[]arr1=new int[]{1,3,4,5,6};//创建一个长度为四的数组
int[]arr2=new int[8];//创建长度为八的空数组
arr2=arr1;//将地址进行赋值
for(int i=0;i<=arr2.length-1;i++){//for循环只是用来遍历的,其实没啥主要作用,就说呢,将arr1的地址值赋值给arr2不就行了吗
System.out.print(arr2[i]+"\t");
}
}
}
运行结果:
显然,这样会产生内存垃圾,那么,换一种方式:
package practice;
public class demo2 {
public static void main(String[]args){
int[]arr1=new int[]{1,3,4,5,6};//创建一个长度为四的数组
int[]arr2=new int[8];//创建长度为八的空数组
for(int i=0;i<=arr1.length-1;i++){
arr2[i]=arr1[i];//这样会产生越界问题
}
for(int i=0;i<=arr2.length-1;i++){//for循环只是用来遍历的,其实没啥主要作用,就说呢,将arr1的地址值赋值给arr2不就行了吗
System.out.print(arr2[i]+"\t");
}
}
}
运行结果:注意向左赋值
三:查找元素的值
package practice;
import java.util.Scanner;
//元素的查找
public class demo3 {
public void search(){
System.out.println("有一串数字,猜猜看!");
Scanner input=new Scanner(System.in);
int[] arr1={12,34,165,34,23,45,22,2,3,4,5,6,7,8};
boolean isflag=false;
for(int i=3;i>0;i--){
System.out.println("您有"+i+"次机会,请输入您猜的数字!");
int number=input.nextInt();
for(int j=0;j<=arr1.length-1;j++){
if(number==arr1[j]){
System.out.println("您是一个小天才!猜对了");
isflag=true;
break;
}else{
System.out.println("猜错了!");
break;
}
}
if(isflag==false){
}
}
}
public static void main(String[]args){
demo3 aa=new demo3();
aa.search();
}
}
运行结果:有点有问题,就是猜对了,我直接想跳出大的循环,但不知道怎么去实现它!
四:折半查找算法
折半查找