1.equals()方法
而“==”是比较int,double......等类型的数值是否相等。
2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么?
(1). 构造方法是一种特殊的方法,方法名称要和类的名称一样,主要功能就是完成对象的初始化,当类实例化对象的时候进行调用。
(2).所谓的方法重载就是方法名称相同,但参数类型和参数个数不同。
(3).
public class Test {
public static void main(String args[]) {
Foo obj = new Foo();
}
}
class Foo{
int value;
public Foo(int intValue){
value = intValue;
}
}
不可以通过编译,在主函数中,构造的方法Foo()中,并没有int型参数。
3.运行下列程序,结果是什么?查阅资料,分析为什么。
public class Test {
public static void main(String args[]) {
double a = 0.1;
double b = 0.1;
double c = 0.1;
if((a + b + c) == 0.3){
System.out.println("等于0.3");
}else {
System.out.println("不等于0.3");
}
}
}
用一个double类型的sum去输出“a+b+c”的值sum=0.30000000000000004
double类型是64位精度在14位以下,如果超出精度范围 ,就会不准。
正确改法:
package org.lxh.demo11.numberdemo;
import java.math.BigDecimal;
public class test {
public static void main(String args[]) {
double a = 0.1;
double b = 0.1;
double c = 0.1;
double sum=0;sum=Mymath.round(Mymath.add(a,b,c),1);
System.out.println("值为"+sum);
}
}
class Mymath{
public static double round(double a,int len){
BigDecimal b1=new BigDecimal(a);
BigDecimal b2=new BigDecimal(1);
return b1.divide(b2,len,BigDecimal.ROUND_HALF_UP).doubleValue();
}
public static double add(double num1,double num2,double num3){
BigDecimal a=new BigDecimal(num1);
BigDecimal b=new BigDecimal(num2);
BigDecimal c=new BigDecimal(num3);
return a.add(b).add(c).doubleValue();
}
}
4.运行下列程序,结果是什么?分析原因,应如何修改.
public class Test {
public static void main(String[] args) {
MyClass[] arr=new MyClass[3];
arr[1].value=100;
}
}
class MyClass{
public int value=1;
}
数组内有空指针,将其全部复制即可
package org.lxh.demo11.numberdemo;
public class test {
public static void main(String[] args) {
MyClass []arr={new MyClass(),new MyClass()};
arr[1].value=100;
}
}
class MyClass{
public int value=1;
}
- 应用StringBuffer类进行10000次连接操作,String赋值后就不可更改,而StringBuffer类使用append等方法改变字符串的值。 6.定义数组后,里面必须有值,不能为空。 (二)实验总结 1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。 a.程序设计思路:连续输入5个人的成绩,排序后,去掉数组中第一个和最后一个值,平均分按照降序,输出从最后一个开始输出。 b.实验问题分析: 问题:检验时用了一个数组一开始无法输出 原因:后来通过查资料发现,数组里面必须全部赋值才能输出。 解决方案:全部输入数据,再做查询
1. import java.util.Scanner;
public class shiyan1{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int [][] score;
int z;
int sum = 0;
double [] averageScore;
averageScore=new double[5];
score=new int [5][10];
double [] finalScore;
finalScore=new double[5];
for(int i=0;i<score.length;i++){
for(int j=0;j<score[i].length;j++){
System.out.println("给第"+(i+1)+"个人打分:");
score[i][j]=in.nextInt();
}
}
for(int k=0;k<score.length;k++){
for(int m=0;m<score[k].length;m++){
z=m;
for(int o=m+1;o<score[k].length;o++){
if(score[k][o]>score[k][z]){
z=o;
}
if(z!=o){
int temp=score[k][m];
score[k][m]=score[k][z];
score[k][z]=temp;
}
}
}
}
for(int p=0;p<score.length;p++){
for(int q=0;q<score[p].length;q++){
if(q==0||q==9){
score[p][q]=0;
}
}
}
for(int t=0;t<5;t++){
for(int y=0;y<10;y++){
sum=sum+score[t][y];
if(y==9){
averageScore[t]=sum/8.0;
}
}
}
for(int g=0;g<5;g++){
finalScore[g]=averageScore[g];
}
for(int k=1;k<finalScore.length;k++){
for(int h=0;h<finalScore.length;h++){
if(finalScore[k]<finalScore[h]){
double temp=finalScore[h];
finalScore[h]=finalScore[k];
finalScore[k]=temp;
}
}
}
for(int j=4;j>=0;j--){
System.out.println(finalScore[j]);
}
}
2.Email验证:在各种应用中,需要对用户输入的email地址进行验证,编写一个方法,判断一个email地址是否有效。(判断条件:A:@和.同时存在 B: @在.之前 C: 不能@开头 D: 以com|cn|net|gov|edu|org结尾)
a.程序设计思路:通过比较@和.的位置,判断是否正确。在判断尾号是什么结尾,是否符合要求中的6个的之一。
b.实验问题分析:
没有遇见问题
import java.util.Scanner;
public class youxiang {
public static void main(String []args){
System.out.println("请输入邮箱:");
Scanner scan=new Scanner (System.in);
String strEmail=scan.next();
int ret=yanzheng(strEmail);
if(ret==1){
System.out.println("地址有效");
}
else{
System.out.println("地址无效");
}
}
public static int yanzheng (String str){
int a=str.indexOf("@");
int b=str.indexOf(".");
if((a!=-1&&b!=-1&&a<b&&a!=1)&&(str.endsWith("com")!=false||str.endsWith("cn")!=false||str.endsWith("net")!=false||str.endsWith("gov")!=false||str.endsWith("edu")!=false||str.endsWith("org"))){
return 1;
}
else{
return 0;
}
}
}
3.统计文件:输入一个字符串,包含各种文件类型的文件名。文件名之间用“,”分隔,要求将各个文件名的首字母大写后分别输出,并统计各种类型文件的文件个数。
a.程序设计思路:取第一个字母,将其通过函数变为大写,在通过“,”把字符串分开,在通过"."把文件的格式分离出来,存放到字符串数组里,通过字符串数组,比较有多少种文件。
b.实验问题分析:
问题1:一开始不知道怎么变大写
解决方案:后来看书发现,可以先将第一个字符取出存到一个数组,再将数组大写后放回去。
问题1:输出重复
解决方案:减少了输出,但还是有重复的,不太会改。
import java.util.Scanner;
import java.lang.StringBuffer;
public class zifuchuantongji {
public static void main(String []args){
String str=scan();
System.out.println("字符串为:"+str);
String str1[]=print_(str);
fenlei(str1);
}
public static String scan(){
Scanner scan=new Scanner (System.in);
System.out.println("请输入字符串:");
String str=scan.next();
return str;
}
public static String[] print_(String str){
String[] s=str.split(",");
for(int i=0;i<s.length;i++){
StringBuffer bur =new StringBuffer(s[i]);
String word=bur.substring(0,1);
s[i]=bur.replace(0,1,word.toUpperCase()).toString();
System.out.println(s[i]);
}
return s;
}
public static void fenlei(String []str){
String a[]=new String[5];
String c=null;
for(int i=0;i<str.length;i++){
a[i]=str[i].substring(str[i].indexOf("."),str[i].length());
}
for(int j=0;j<a.length;j++){
int n=0;
for(int y=0;y<a.length;y++){
if(a[y].equals(a[j])==true){
n++;c=a[y];
}
}
System.out.println(c+"一共有"+n+"个");
}
}
}
4.4.身份证识别:公民身份证号码由十八位数字组成。从左至右依次为:六位地址码,八位出生日期码,三位顺序码和一位校验码。顺序码的奇数分配给男性,偶数分配给女性。编写一个识别身份证基本信息的小工具,输入一个居民身份证号,则输出居民所属省份(直辖市、自治区),生日(格式:xxxx-xx-xx)和性别信息。
a.程序设计思路:输入前两位,并在数组里寻找地址,取出生日,取出生日后面三位,用函数,将其变为int型,在判断奇偶性,看看是男是女。
b.实验问题分析:
问题:不会判断男女
解决方案:分别将3位数字取出,存到一个字符串里,然后在通过Integer.parseInt()函数转化成int型
package shenfenzheng;
import java.util.Scanner;
public class shenfenzheng {
public static void main(String[]args){
String dress[][]={
{"","北京市","天津市","河北省","山西省","内蒙古自治区"},
{"","辽宁省","吉林省","黑龙江省"},
{"","上海市","江苏省","浙江省","安徽省","福建省","江西省","山东省"},
{"","河南省","湖北省","湖南省","广东省","广西壮族自治区","海南省"},
{"重庆市","四川省","贵州省","云南省","西藏自治区"},
{"","甘肃省","青海省","宁夏回族自治区","新疆维吾尔自治区"},
};
Scanner scan =new Scanner(System.in);
System.out.println("请输入身份证号:");
String str=scan.next();
if(str.length()>18){
System.out.println("身份证号无效!");
}
char x=str.charAt(0);
char y=str.charAt(1);
int num1=(int)x-48;
int num2=(int)y-48;
System.out.println("省,直辖市:"+dress[num1-1][num2]);
System.out.println("生日为:"+str.substring(6,10)+"-"+str.substring(10,12)+"-"+str.substring(12,14));
String s=str.substring(15,17);
int num=Integer.parseInt(s);
num=num/100;
if(num%2==0){
System.out.println("性别:男");
}
else{
System.out.println("性别:女");
}
}
}
(三)代码托管
(四).学习进度条