Java实验二 计算机 1501 王奕开 18

 2023-09-05 阅读 208 评论 0

摘要:1.equals()方法 而“==”是比较int,double......等类型的数值是否相等。 2.什么是构造方法?什么是构造方法的重载?下面的程序是否可以通过编译?为什么? (1). 构造方法是一种特殊的方法,方法名称要和类

1.equals()方法
1080047-20170327131135045-549298938.png
而“==”是比较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;
}
  1. 应用StringBuffer类进行10000次连接操作,String赋值后就不可更改,而StringBuffer类使用append等方法改变字符串的值。
    6.定义数组后,里面必须有值,不能为空。
    (二)实验总结
    1.评分系统:一共10个评委,满分10分,假设有5个选手,分别由评委打分,去掉一个最高分和一个最低分后的平均分为该选手得分,将选手的得分从高到低进行输出。定义适当的方法。
    a.程序设计思路:连续输入5个人的成绩,排序后,去掉数组中第一个和最后一个值,平均分按照降序,输出从最后一个开始输出。
    b.实验问题分析:
    问题:检验时用了一个数组一开始无法输出
    原因:后来通过查资料发现,数组里面必须全部赋值才能输出。
    解决方案:全部输入数据,再做查询

    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("性别:女");}}}

(三)代码托管
1080047-20170327122214279-1267913904.png
码云地址:https://git.oschina.net/wangyikai1996/shiyaner.git
(四).学习进度条
1080047-20170327130835608-52955249.png

转载于:https://www.cnblogs.com/494625951-wangyikai/p/6626328.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/773.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息