日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

《Java技术》第二次作业计科1501赵健宇

發布時間:2023/12/1 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Java技术》第二次作业计科1501赵健宇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(一)學習總結

  • 1.使用Eclipse關聯jdk源代碼,查看String類的equals()方法

    equals()方法截圖

    “==”比較的是地址。equals方法他同樣使用==號進行內存地址的比較。但是equals方法重寫如果==號比較不相等,還會進行一下值的比較。
    所以equals方法具體的作用要看當前的那個類是如何實現重寫父類中該方法的。
    簡單說,equals方法比較兩個對象的內容,==比較兩個對象在內存中的首地址是否相同。

    ==的使用結果:

    String str1 = "hello";String str2 = new String("hello");String str3 = str2;String str4 = "hello";System.out.println("str1 == str2 --> " + (str1 == str2)); //FALSESystem.out.println("str1 == str3 --> " + (str1 == str3)); //falseSystem.out.println("str2 == str3 --> " + (str2 == str3));//true 如果使用equals()則所有值都為true。
  • 2.構造方法用來對變量進行初始化的.相當于給變量賦值.
    如果你沒定義構造方法,在每個類的定義當中,都默認有一個無參數的構造方法

    > 如 public Student(){};**構造方法的重載**(1)在Java中,允許在一個類中定義多個構造方法。(2)在創建對象時,系統會自動根據所調用的構造方法中包含的參數類型,個數,選擇匹配的構造方法創建對象。 public class Test {public static void main(String args[]) { Foo obj = new Foo(); } } class Foo{int value;public Foo(int intValue){value = intValue;} }

    以上構造方法不能通過編譯,如果你定義了一個有參的構造函數,為了保證正確性,系統不會創建無參構造函數,這時候,如果你還想允許無參構造,就必須顯式的聲明一個
    解決方法: Foo obj = new Foo(100);

  • 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"); } } }
    (a+b+c)為0.30000000000000004,不等于0.3。原因在于我們的計算機是二進制的。浮點數沒有辦法是用二進制進行精確表示。
    其實java的float只能用來進行科學計算或工程計算,在大多數的商業計算中,一般采用java.math.BigDecimal類來進行精確計算。

    在使用BigDecimal類來進行計算的時候,主要分為以下步驟:1、用float或者double變量構建BigDecimal對象。2、通過調用BigDecimal的加,減,乘,除等相應的方法進行算術運算。3、把BigDecimal對象轉換成float,double,int等類型。轉載說明 [**原文鏈接**](http://www.cnblogs.com/chenssy/archive/2012/09/09/2677279.html)

    經過修改

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;if ((Math.round(Math.add(a, b, c), 1)) == 0.3) {System.out.println("等于0.3");} else {System.out.println("不等于0.3");}}} class Math{public static double add(double value1, double value2, double value3) {BigDecimal b1 = new BigDecimal(Double.valueOf(value1));BigDecimal b2 = new BigDecimal(Double.valueOf(value2));BigDecimal b3 = new BigDecimal(Double.valueOf(value3));return b1.add(b2).add(b3).doubleValue();//.add(b3)}public static double round(double d,int len){BigDecimal b1 = new BigDecimal(d);BigDecimal b2 = new BigDecimal(1);return b1.divide(b2, len,BigDecimal.ROUND_HALF_UP).doubleValue();} }

運行結果:等于0.3

  • 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; }

經討論

public class Test {public static void main(String[] args) {MyClass[] arr={new MyClass(),new MyClass(),new MyClass()};System.out.println(arr.length);arr[1].value=100;for(int i = 0;i<arr.length;i++){System.out.println(arr[i].value);}} } class MyClass{public int value=1; }
  • 5.在一個10000次的循環中,需要進行字符串的連接操作,那么,應該使用String類還是StringBuffer類,為什么?性能有差異嗎?能否寫出測試代碼證明你的結論。(可查閱資料)
    用StringBuffer類,String的內容一旦聲明就不可改變,只能改變string的引用地址,若改變次數過多,應該用StringBuffer。

    StringBuffer類中append()方法可以一直調用,并且返回一個StringBuffer類的實例。
public class Test {public static void main(String[] args) {StringBuffer buf = new StringBuffer();for(int i=0;i<50;i++){buf.append("hello!");}System.out.println(buf);} }
  • 6.其他需要總結的內容。

1.java中數組必須指定長度,初始化數組的時候指定,例子:
int myint[]=new int[20];
int myint[];只是聲明了一個數組變量而不是定義了一個數組 ,注意二者的區別

(二)實驗總結

1.評分系統:一共10個評委,滿分10分,假設有5個選手,分別由評委打分,去掉一個最高分和一個最低分后的平均分為該選手得分,將選手的得分從高到低進行輸出。

程序設計思路:利用二維數組依次輸入選手成績,使用求最大,最小,平均值三個方法。最后排序。people值可以更換
問題1:計算選手最終得分
解決方案:用總成績減去最大得分減去最小得分除8

public static double[] avg(int xuanshou[][], int people) {double[] grade = new double[people];for (int j = 0; j < xuanshou.length; j++) {for (int i = 0; i < xuanshou[j].length; i++) {grade[j] += xuanshou[j][i];}}for (int x = 0; x < people; x++) {int out = max(xuanshou, x) + min(xuanshou, x);grade[x] = grade[x] - out;grade[x] = grade[x] / 8;}return grade;}

2.Email驗證:在各種應用中,需要對用戶輸入的email地址進行驗證,編寫一個方法,判斷一個email地址是否有效。

程序設計思路:輸入String類型,利用string方法查找判斷
問題1:“@”“.”位置問題
解決方案:indexOf方法取得位置,判斷位置前后

public static boolean jundge(String in) {int x = in.indexOf("@");int y = in.indexOf(".");if (in.endsWith("com") || in.endsWith("cn") || in.endsWith("net")|| in.endsWith("gov") || in.endsWith("edu")|| in.endsWith("org")) {if (x != -1 && y != -1 && x < y && x != 0) {return true;} else {return false;}} else {return false;}}

3.統計文件:輸入一個字符串,包含各種文件類型的文件名。文件名之間用“,”分隔,要求將各個文件名的首字母大寫后分別輸出,并統計各種類型文件的文件個數。

程序設計思路:string的分割方法分離并記錄文件類型

主要代碼

String s[] = filename.split(",");String[] flags = new String[s.length];for(int i=0;i<s.length;i++){String sb = new String(s[i]);String str = sb.substring(0, 1).toUpperCase() + sb.substring(1); System.out.print(str+"\t"); flags[i] = sb.substring((sb.indexOf(".")));}System.out.println();int jilu=0;for(int j=0;j<flags.length;j++){int F1 = 1;for(int k=j+1;k<flags.length;k++){if(flags[k].equals(flags[j])){F1++;jilu = k;}} if(j==jilu){j++;}else{System.out.println(flags[j]+"個數為"+F1);}}}

4.身份證識別:公民身份證號碼由十八位數字組成。從左至右依次為:六位地址碼,八位出生日期碼,三位順序碼和一位校驗碼。順序碼的奇數分配給男性,偶數分配給女性。

程序設計思路:輸入身份證號碼可能有x,用string類型,
問題1:身份證長度等于18
原因:不能大于不能小于
解決方案:

String ID = input.nextLine();if(ID.length()!=18){System.out.println("輸入錯誤!");System.exit(0);}

問題2:判斷地區問題
原因:地區太多不能用ifelse判斷
解決方案:使用二維數組,將string的身份證轉為int型。

String[][] region1 = {{"北京","天津","河北","山西","內蒙"},{"遼寧","吉林","黑龍江"},{"上海","江蘇","浙江","安徽","福建","江西","山東"},{"河南","湖北","湖南","廣東","廣西","海南"},{"重慶","四川","貴州","云南","西藏"},{"陜西","甘肅","青海","寧夏","新疆"}};String regionX = ID.substring(0, 1);String regionY = ID.substring(1, 2);System.out.println();try {int x = Integer.parseInt(regionX);int y = Integer.parseInt(regionY);for(int j= 0;j<region1.length;j++){for(int k= 0;k<region1[j].length;k++){if((x-1)==j&&(y-1)==k){System.out.println(region1[j][k]);}}} } catch (NumberFormatException e) {e.printStackTrace();}

(三)代碼托管(務必鏈接到你的項目)

https://git.oschina.net/hebau_cs15/hebau-cs01ZJY

轉載于:https://www.cnblogs.com/ai1045152332/p/6607551.html

總結

以上是生活随笔為你收集整理的《Java技术》第二次作业计科1501赵健宇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。