Java程序设计练习2——Java基础应用
2013-05-16 16:15
225 查看
第二章Java基础应用
2.1基本语法
实例019输出错误信息和调试信息利用两个System类成员变量输出,两个类成员变量是out和err,都是static,out主要用于输出调试信息,err用于输出错误信息,一般用红色显示(在eclipse控制台是这样)。out和err都是实例对象成员。注:实例变量也是变量,首字母小写
packagechapter2; publicclassDemo019{ publicstaticvoidmain(String[]args){ System.out.println("输出错误信息"); System.err.println("输出错误信息"); } }
输出结果:
输出错误信息
输出错误信息
备注:err可以输出错误信息,但也不仅仅只是输出错误信息,输出信息是一个基本功能,只是颜色弄成红色以示提醒,本质是输出信息,加上红色表示提醒,这些信息可以是错误的,也可以是特别需要提醒用户的。
实例020从控制台输入字符
类似输出,输入使用in这个实例变量,也是System类的。它是一个输入流类变量,可以接收用户输入的信息,是标准的输入流实例对象。输入流就像一个管子一样,将从一个输入口接收到的东西"搭"到另一个目的地方,将信息流输入进去。System类的in就是这样的一个管子。可以从用户那里接收信息。
另外使用Scanner来扫描用户输入的信息。
代码如下:
packagechapter2; importjava.util.Scanner; publicclassDemo020{ publicstaticvoidmain(String[]args){ //搭建一个输入流扫描器 Scannerscanner=newScanner(System.in); //提示请输入你的名字 System.out.println("请输入你的名字:"); //将扫描的内容输入到一个字符串中 Stringline=scanner.nextLine(); //输出名字 System.out.println("你的名字是:"+line); } } 输出结果: 请输入你的名字: 王家玮 你的名字是:王家玮
实例021暂时不懂
实例022自动类型和强制类型转换
注意:+两边的操作数类型不同,操作值结果也是不同的。同属于基本类型的,运算后,结果是自动转换后,如果一个是字符串一个是数值,操作结果是字符串。
packagechapter2; publicclassDemo022{ publicstaticvoidmain(String[]args){ //创建各种基本类型的变量 byteb=127; charc='a'; shorts=97; inti=212; longl=23242L; floatf=3.4F; doubled=23.4; //自动转换输出 System.out.println("byte+ char="+(b+c));//b和c先转换成int再计算的 System.out.println("byte+char+short="+(b+c+s));//同上 System.out.println("byte+char+short+int="+(b+c+s+i)); System.out.println("byte+char+short+int+long="+(b+c+s+i+l)); System.out.println("byte+char+short+int+long+float=" +(b+c+s+i+l+f)); System.out.println("byte+char+short+int+long+float+double=" +(b+c+s+i+l+f+d)); //强制转换 System.out.println("double转换成int="+(int)d); System.out.println("long转换成int="+(int)l); System.out.println("short转换成char="+(char)s); System.out.println("char转换成int="+(int)c); } }
实例023利用位运算进行加密
可以利用异或运算符^对字符串的每一个字符进行异或运算,这样就可以得到一个新的字符串,这个被处理过的字符串其实就是经过加密的。
packagechapter2; importjava.util.*; publicclassDemo023{ publicstaticvoidmain(String[]args){ //创建扫描器,扫描输入的密码 Scannerscanner=newScanner(System.in); System.out.println("请输入你的密码:"); Stringstr=scanner.nextLine(); //将输入的字符串转换成数组进行处理 char[]array=str.toCharArray(); for(inti=0;i<array.length;i++){ array[i]=(char)((array[i])^100000); } //输出转换后的结果 System.out.println("加密后的结果是:"); for(chari:array){ System.out.print(i); } //另一种输出方式 System.out.println("\n"+newString(array)); } }
输出结果:
请输入你的密码:
123456
加密后的结果是:
蚑蚒蚓蚔蚕蚖
蚑蚒蚓蚔蚕蚖
总结:
灵活运用位运算可以实现很多高级、高效的算法。例如,一个数字的位移运算,每左移n位就等于这个数乘以2的n次方,每右移n位就等于这个数除以2的n次方,而且这个算法非常快。
实例024用三元运算符判断技术和偶数
三元运算符是if...else条件语句的简写格式,可以完成简单的条件判断。本实例利用三元运算符实现奇偶数的判断,程序要求用户输入一个整数,然后判断是奇数还是偶数并输出判断结果。代码如下:
packagechapter2; /**本实例利用三元运算符实现奇偶数的判断,程序要求用户输入一个整数, *然后判断是奇数还是偶数并输出判断结果。 */ importjava.util.*; publicclassDemo024{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); System.out.println("请你输入一个整数呢:"); longnumber=scanner.nextLong(); Stringresult=((number%2)==0)?"这个数是偶数!":"这个数是奇数!"; System.out.println(result); } }
总结:
三元运算符的使用语法是(表达式判断逻辑值)?(结果1):(结果2)具体的含义是:如果表达式判断的逻辑值是真,就输出结果1,如果是假就输出结果2
025更精确的使用浮点数
使用BigDecimal进行大数运算
BigDecimal可以进行高精度的数值运算,有四个常用的四则运算方法,add,subtract,multiply,divide
packagechapter2; importjava.math.BigDecimal; publicclassDemo025{ publicstaticvoidmain(String[]args){ //非精确计算 doubleprice=3.3; doublemoney=5; doubleresult=money-price; //输出剩余的钱 System.out.println("double精度剩余的钱:"+result); BigDecimalprice1=newBigDecimal(3.3); BigDecimalmoney1=newBigDecimal(5); BigDecimalresult1=money1.subtract(price1); //输出精确计算下的钱 System.out.println("BigDecimal精度剩余的钱:"+result1); } } 输出结果 double精度剩余的钱:1.7000000000000002 BigDecimal精度剩余的钱:1.70000000000000017763568394002504646778106689453125
实例026利用移位运算符进行乘法运算
程序开发中乘法运算通常是*或BigDecimal类的multiply()方法,本例用的是移位运算符实现特殊的乘法运算,这种运算方式速度效率非常之高,在大数运算的时候特别有用。
原理:一个整数A执行向左移位运算n位,效果等同于这个整数A乘以2的n次方,注意不是这个整数的n次方。
packagechapter2; importjava.util.*; //利用移位运算符实现整数乘法运算 publicclassDemo026{ publicstaticvoidmain(String[]args){ System.out.println("请输入一个整数:"); Scannerscanner=newScanner(System.in); longlg=scanner.nextLong(); System.out.println("您输入的数是:"+lg); //移位运算不能单独作为一个语句 //2<<2; System.out.println("该数字乘以2的结果是:"+(lg<<1)); System.out.println("该数字乘以4的结果是:"+(lg<<2)); System.out.println("该数字乘以8的结果是:"+(lg<<3)); System.out.println("该数字乘以16的结果是:"+(lg<<4)); System.out.println("该数字乘以32的结果是:"+(lg<<5)); System.out.println("该数字乘以64的结果是:"+(lg<<6)); } } 输出结果: 请输入一个整数: 99 您输入的数是:99 该数字乘以2的结果是:198 该数字乘以4的结果是:396 该数字乘以8的结果是:792 该数字乘以16的结果是:1584 该数字乘以32的结果是:3168 该数字乘以64的结果是:6336
实例27不借用第三个变量实现两个数字的交换
实现原理:利用按位运算的异或运算符^实现两个变量的互换。按位异或运算符进行位运算规则是:两个位,相同的结果取0,不同的结果取1.另外需要注意的是按位运算符运算结果必须赋值给一个结果,单纯的运算作为一个语句如A^B是非法的,会报错
packagechapter2; importjava.util.Scanner; publicclassDemo027{ publicstaticvoidmain(String[]args){ System.out.println("请输入第一个整数:"); Scannerscannera=newScanner(System.in); longa=scannera.nextLong(); System.out.println("您输入的数是:"+a); System.out.println("请输入第二个整数:"); Scannerscannerb=newScanner(System.in); longb=scannerb.nextLong(); System.out.println("您输入的数是:"+b); System.out.println("交换前的a和b:"+"a="+a+"b="+b); a=a^b; b=b^a; a=a^b; System.out.println("交换后的a和b:"+"a="+a+"b="+b); } }
输出结果是:
请输入第一个整数:
2
您输入的数是:2
请输入第二个整数:
9
您输入的数是:9
交换前的a和b:a=2b=9
交换后的a和b:a=9b=2
2.3条件语句
实例028判断某一年是否为闰年原理:判断是否是闰年的关键是公式。满足两种条件的整数:1.能够被400整除的整数。2.能够被4整除但不能被100整除的整数
packagechapter2;
importjava.util.Scanner;
publicclassDemo028{
publicstaticvoidmain(String[]args){
System.out.println("请输入一个年份:");
Scannerscanner=newScanner(System.in);
longlg=scanner.nextLong();
if(((lg%4==0)&&((lg%100)!=0))||(lg%400==0)){
System.out.println("您输入的年份"+lg+"是闰年");
}else{
System.out.println("您输入的年份"+lg+"不是闰年");
}
}
}
输出结果:
请输入一个年份:
2100
您输入的年份2100不是闰年
注意:三元运算符(?:)是if...else...语句的简洁写法,可以根据需要来决定使用哪一种,前者常用于赋值判断,后者常用于业务流程
实例029验证登陆信息的合法性
packagechapter2;
importjava.util.Scanner;
publicclassDemo029{
publicstaticvoidmain(String[]args){
System.out.println("请输入您的姓名:");
ScannerscannerName=newScanner(System.in);
Stringname=scannerName.nextLine();
System.out.println("请输入您的密码:");
ScannerscannerPasswd=newScanner(System.in);
Stringpassword=scannerPasswd.nextLine();
loginCheck(name,password);
}
publicstaticvoidloginCheck(Stringname,Stringpassword){
if(name.equals("ren")&&password.equals("123456")){
System.out.println("登录成功!");
}else{
System.out.println("登录失败!");
}
}
}
相关说明:字符串属于基本对象而非基本数据类型,不能使用==来判断两个字符串是否相等,所以它需要通过equals()方法来判断两个字符串内容是否相同,如果使用==判断的将是两个字符串对象的地址,而非字符串内容。
实例030为新员工分配部门
原理:这里使用switch语句,并利用hashCode来区分不同情况
importjava.util.Scanner;
publicclassExample{
publicstaticvoidmain(String[]args){
Scannerscan=newScanner(System.in);
System.out.println("请输入新员工的姓名:");
Stringname=scan.nextLine();//接收员工名称
System.out.println("请输入新员工应聘的编程语言:");
Stringlanguage=scan.nextLine();//接收员工应聘的编程语言
//根据编程语言确定员工分配的部门
switch(language.hashCode()){
case3254818://java的哈希码
case2301506://Java的哈希码
case2269730://JAVA的哈希码
System.out.println("员工"+name+"被分配到Java程序开发部门。");
break;
case3104://c#的哈希码
case2112://C#的哈希码
System.out.println("员工"+name+"被分配到C#项目维护组。");
break;
case-709190099://asp.net的哈希码
case955463181://Asp.net的哈希码
case9745901://ASP.NET的哈希码
System.out.println("员工"+name+"被分配到Asp.net程序测试部门。");
break;
default:
System.out.println("本公司不需要"+language+"语言的程序开发人员。");
}
}
}
输出结果:
请输入新员工的姓名:
Jack
请输入新员工应聘的编程语言:
java
员工Jack被分配到Java程序开发部门。
实例031::用Switch语句根据消费金额计算折扣
packagechapter2;
publicclassDemo0111{
publicstaticvoidmain(String[]args){
//创建包含几种语言的数组
String[]language=newString[]{"Chinese","English",
"Deutsch","Castellano"};
intindex=0;
while(index<language.length){
System.out.println(language[index++]);
}
}
}
输出结果:
Chinese
English
Deutsch
Castellano
ViewCode
相关文章推荐
- JAVA基础 day22 File类的方法和应用 利用递归获取目录下的所有文件 Properties类的应用(和IO技术结合,存取配置文件) 打印流和合并流等功能类的学习应用 切割文件练习
- Coursera_程序设计与算法_计算导论与C语言基础_数组应用练习
- 【JAVA语言程序设计基础篇】--图形用户界面基础--练习
- JAVA基础:漫谈Java程序设计中的接口应用
- 磨刀不误砍材工 - Java的基础语言要素(运算符和表达式的应用)
- Java 基础一些代码练习笔记(HashCode重写)
- 黑马程序员—java技术blog—第十二篇java基础应用GUI模拟登陆注册
- Java 程序设计基础(第四版)下
- Java面向对象程序设计之接口应用
- java基础代码练习
- Java基础---Java常量的应用(九)
- JAVA基础应用: 处理Java中的日期问题
- java 基础练习-编写敏感词过滤程序
- Java suspend/resume基础应用
- java 基础练习 杨辉三角形
- Java基础练习
- Java基础知识IO流(练习)
- 黑马程序员 Java基础排序的一些应用
- JAVA基础应用——连接Sql server
- 第三章:Java基础程序设计(中)