學會面向對象經典練習題21道

1.面向對象練習:設計小狗類
需求:

抽象形成一個小狗類Dog
屬性:名字name 年齡age 品種kind 主人host 價格price
功能:
跑run:無參,打印:小狗Dog跑的老快了~
吃eat:參數int n,打印:小狗今晚要吃n根肉骨頭
睡覺sleep:參數double num,打印:小狗睡了num個小時
玩play:參數String host,返回值 String “飛盤”, 打印:小狗與主人host玩的很開心
叫bark:打印:小狗喜歡汪汪叫,封裝此方法,玩play()的時候才bark()
創建本類的2個對象,并給兩個對象的所有屬性并查看
名字name 年齡age 品種kind 主人host 價格price
哮天犬 999 獵狗 二郎神 10000
羅小黑 5 神奇犬 大自然 999.99

public class TestDog {public static void main(String[] args) {//5.1創建Dog類的第1個對象Dog d1 = new Dog();//5.2修改d1對象的屬性值d1.setName("哮天犬");d1.setAge(999);d1.setKind("獵狗");d1.setHost("二郎神");d1.setPrice(10000);//5.3打印查看d1對象的屬性值System.out.println(d1.getName());System.out.println(d1.getAge());System.out.println(d1.getKind());System.out.println(d1.getHost());System.out.println(d1.getPrice());//6.1創建Dog類的第2個對象Dog d2 = new Dog();//6.2修改d2對象的屬性值d2.setName("羅小黑");d2.setAge(5);d2.setKind("神奇犬");d2.setHost("大自然");d2.setPrice(999.99);//6.3打印查看d2對象的屬性值System.out.println(d2.getName());System.out.println(d2.getAge());System.out.println(d2.getKind());System.out.println(d2.getHost());System.out.println(d2.getPrice());//7.調用dog類的5個方法d1.run();d1.eat(5);d1.sleep(8.8);//方式一:只調用play()的功能d1.play(d1.getHost());//方式二:不僅調用play()的功能還接收了返回值飛盤交給r保存String r = d1.play(d1.getHost());System.out.println(r);//方式三:調用play()的功能,并直接打印了play()的返回值飛盤System.out.println(d1.play(d1.getHost()));}
}
//1.定義小狗類
class Dog{//2.定義5個屬性//3.1使用private修飾所有的屬性private String name;//姓名private int age;//年齡private String kind;//品種private String host;//主人private double price;//價格//4.1添加小狗類功能1public void run(){System.out.println("小狗Dog跑的老快了~");}//4.2添加小狗類功能2public void eat(int n){System.out.println("小狗今晚要吃"+n+"根肉骨頭");}//4.3添加小狗類的功能3public void sleep(double num){System.out.println("小狗今晚睡了"+num+"個小時");}//4.4添加小狗類的功能4public String play(String host){System.out.println("小狗與主人"+host+"玩的很開心");bark();//在本類的公共方法中調用被封裝的方法的功能return "飛盤";//bark();//遇到return時已經結束本方法了,return后不可以直接寫代碼}//4.5添加小狗類的功能5private void bark(){System.out.println("小狗喜歡汪汪叫");}//3.2添加被封裝屬性的公共的get與set方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getKind() {return kind;}public void setKind(String kind) {this.kind = kind;}public String getHost() {return host;}public void setHost(String host) {this.host = host;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

2.封裝百分制分數
封裝百分制分數,和它對應的五檔分制分數

public class Score {//成員變量int score;char level;//構造方法public Score(int score) {this.score = score;//計算五檔分數,保存到成員變量levelthis.level = setLevel(score);}private char setLevel(int s) {char r = 0;switch(s/10) {case 10:case 9:r = 'A';break;case 8:case 7:r = 'B';break;case 6:r = 'C';break;case 5:case 4:case 3:case 2:r = 'D';break;case 1:case 0:r = 'E';break;}return r;}public String toString() {return score+", "+level;}
}//測試類:public class TestScore {
public static void main(String[] args) {
/*
A [90,100]
B [70,90)
C [60,70)
D [20,60)
E [0,20)
*/
Score s = new Score(54);
System.out.println(s.toString());
}
}

3.打印圖形
設計一個可以隨機打印形狀的代碼

//形狀類 ---父類public class Shape {public void draw() {//無意義代碼//在子類中要重寫draw()方法System.out.println("圖形形狀");}public void clear() {System.out.println("\n\n\n");}
}//圓形類---子類public class Circle extends Shape {@Overridepublic void draw() {System.out.println("打印一個圓形 O");}
}//方塊類---子類public class Square extends Shape {@Overridepublic void draw() {System.out.println("打印一個方形 口");}
}//直線類---子類public class Line extends Shape {@Overridepublic void draw() {System.out.println("打印一條直線 ————");}public void length() {System.out.println("一米多。。。");}
}//測試類---隨機生成圖形import java.util.Random;
import java.util.Scanner;public class TestShape {public static void main(String[] args) {System.out.println("按回車繼續");while(true) {int r = new Random().nextInt(4);switch(r) {case 0: f(new Shape()); break;case 1: f(new Line()); break;case 2: f(new Square()); break;case 3: f(new Circle()); break;}}}/** Shape*   - Line*   - Square*   - Circle*/static void f(Shape s) {System.out.println("----------------");new Scanner(System.in).nextLine();s.draw();//向上轉型后,只能調用父類定義的通用成員//子類特有成員不能調用//s.length();//s對象的真實類型是 Line 類型if(s instanceof Line) {//向下轉型成Line類型,才能調用它特有的方法Line line = (Line) s;line.length();}new Scanner(System.in).nextLine();s.clear();}
}

4.設計士兵類
設計士兵與武器AK47類,并完成前進、進攻、發射子彈、裝載子彈的功能

士兵類

/** 封裝:*     士兵相關的屬性數據、邏輯運算方法,*     封裝成一個士兵“類”組件*/
import java.util.Random;
public class Soldier {//成員變量,屬性變量int id; //默認值0int blood = 100;AK47 a;//默認 null 值//成員方法public void go() {//this是一個特殊引用//引用“當前對象”的地址//當前對象:誰調用就是誰//可以省略,缺省存在System.out.println(this.id+"號士兵前進");}public void attack() {if(blood == 0) {System.out.println("這是"+id+"號士兵的尸體");return;//方法結束}System.out.println(id+"號士兵進攻");if(a != null) {a.fire();//調用槍發射子彈}//模擬進攻掉血//隨機的減血量int d = new Random().nextInt(10);blood -= d;    if(blood < 0) {//不允許負數血量blood = 0;}System.out.println("血量:"+blood);//血量是0if(blood == 0) {System.out.println(id+"號士兵陣亡");}}
}

武器類

import java.util.Random;
/** 封裝:*     AK47武器相關的屬性數據、運算代碼,*     封裝成一個“類”組件*/
public class AK47 {int bullets = 100;public void fire() {if(bullets == 0) {System.out.println("沒有子彈");return;}//隨機產生發射子彈數量int r = new Random().nextInt(10);//要發射的數量,比現有子彈多if(r > bullets) {r = bullets;//有多少發多少}bullets -= r;for(int i=0;i<r;i++) {System.out.print("突");}System.out.println("~");if(bullets == 0) {System.out.println("彈夾空了");}}public void load() {bullets = 100;System.out.println("彈夾已裝滿");}
}

測試類

public class Test1 {public static void main(String[] args) {//新建 Soldier 士兵對象//內存地址,保存到變量s1Soldier s1 = new Soldier();Soldier s2 = new Soldier();//用s1引用第一個士兵對象//為它的id賦值s1.id = 9527;s2.id = 9528;//用s1找到第一個士兵對象//讓第一個士兵執行go()方法代碼s1.go();s2.go();//新建 AK47 對象,保存到s1.as1.a = new AK47();s2.a = new AK47();s2.attack();s2.attack();s2.attack();s2.attack();}
}

測試類

import java.util.Scanner;public class Test2 {public static void main(String[] args) {//新建AK47對象,地址存到變量aAK47 a = new AK47();System.out.println("按回車射擊,輸入load裝載子彈");while(true) {String s = new Scanner(System.in).nextLine();if(s.equals("load")) {a.load();continue;}a.fire();}}
}

5.編寫一個關于星期幾的枚舉WeekDay
要求:枚舉值:MON,TUE,WED,THR,FRI,SAT,SUN
該枚舉要有一個方法,調用該方法返回中文格式的星期幾

import org.junit.Test;public class Work{@Testpublic void test(){//6.1拿到指定的枚舉名System.out.println(WeekDay.MON);//MON//6.2拿到指定的枚舉名對應的值System.out.println(WeekDay.MON.getValue());//星期一}
}
//1.定義枚舉類
enum WeekDay {//2.定義枚舉類中的枚舉與其對應的值MON("星期一"), TUE("星期二"), WES("星期三"), THR("星期四"), FRI("星期五"), SAT("星期六"), SUN("星期日");//3.定義枚舉類中的私有屬性private String day;//4.定義枚舉類的構造函數private WeekDay(String day) {this.day = day;}//5.定義枚舉類的方法,并獲取枚舉對應的值public String getValue(){return this.day;}
}

6.異常:請定義main()方法,在main()中按以下順序要求編寫代碼:
分別從控制臺接收兩個整數
計算"第一個數 / 第二個數"的結果,并打印;
為了防止第二個數為0導致異常,請在計算時使用異常處理
當出現異常時,向用戶打印:第二個數不能為0!

public class Test {public static void main(String[] args) {//分別從控制臺接收兩個整數Scanner scanner = new Scanner(System.in);System.out.print("請輸入第一個數:");int num1 = scanner.nextInt();//為了防止第二個數為0導致異常,請在計算時使用異常處理。當出現異常時,向用戶打印:第二個數不能為0!!System.out.print("請輸入第二個數:");int num2 = scanner.nextInt();//計算“第一個數 / 第二個數”的結果,并打印;try {int div = num1/num2;System.out.println("第一個數/第二個數="+div);} catch (ArithmeticException e) {if(num2==0) {System.out.println("第二個數不能為0");}}}
}

7.接收用戶輸入的數字,判斷在此范圍內質數的個數

import java.util.Scanner;public class CountPrimeNumber {public static void main(String[] args) {System.out.println("輸入整數n,求n內質數的數量");int n = new Scanner(System.in).nextInt();count(n);}public static void count(int n) {if(n<2) {System.out.println("沒有質數");return;}if(n==2) {System.out.println("有1個質數");return;}//定義計數變量int count = 1;//已知有一個質數outer:   //從3到n尋找質數for(int i=3; i<=n ;i++) {//判斷i是否是質數double max = 1+ Math.sqrt(i);for(int j=2; j<max; j++) {//在2到<max,找能把i整除的數if(i%j == 0) {//i被j整除,i不是質數//跳到i++,繼續判斷下一個i值continue outer;//跳到外部outer的位置}}//內層j循環結束,i是質數count++;}System.out.println(n+"內質數的數量:"+count);}
}

8.生成一個順序數組,將這個數組的元素打亂順序后輸出

import java.util.Arrays;
import java.util.Random;public class ShuffleArray {public static void main(String[] args) {//調用f()方法,從方法獲取一個int[]數組int[] a = f();//遍歷打印數組數據for(int i=0; i<a.length; i++) {System.out.println(a[i]);}System.out.println("\n\n----------------");//把a數組,傳遞到 shuffle() 方法打亂順序shuffle(a);//打印亂序后的數組System.out.println(Arrays.toString(a));}public static int[] f() {//新建int[]數組,長度5//再把它的內存地址存到變量 aint[] a = new int[5];//遍歷訪問5個位置,填入1,2,3,4,5for(int i=0; i<a.length; i++) {a[i] = i+1;}//返回數組,把數組返回到調用位置//本質是把數組地址返回去return a;}public static void shuffle(int[] a) {/**        j* [4, 2, 3, 1, 5]*     i** *) i循環遍歷數組* *) 隨機定位下標j與i交換*/for (int i = 0; i < a.length; i++) {//隨機下標j,范圍:[0, a.length)int j = new Random().nextInt(a.length);int t = a[i];a[i] = a[j];a[j] = t;}}
}

9.異常:找出以下程序中存在的問題,并修改1

public static void method() throws RuntimeException, NullPointerException {throw new RuntimeException("method Exception");
}public static void main(String args[]) {try {//監視代碼method(); //當try塊中的代碼有異常時,會交給catch來處理} catch (Exception e) {//catch拿到try拋出的異常時,會進行異常類型的匹配,只有異常類型匹配成功了,說明當前catch才具備處理該異常的能力//什么時異常類型匹配成功?//兩個異常類型型相同 、 catch塊中書寫的異常類型是try塊異常的父類型//示例://try塊中發生NullPointerException異常,catch塊中書寫的是Exception//catch塊中可以匹配成功e.printStackTrace();} catch (RuntimeException re) {re.printStackTrace();}
}//程序中存在的問題:
main方法中在捕獲RuntimeException類型變量re的地方會編譯錯誤,因為ExceptionRuntimeException 的父類,method方法執行的異常都會被第一個catch 塊捕獲,所以會報編譯時錯誤。說明:method方法后面throws列出的異常類型是不分先后順序的,所以method方法是沒問題的/*** 修改后的程序 ***/
public static void method() throws RuntimeException, NullPointerException {throw new RuntimeException("method Exception");
}public static void main(String args[]) {try {method();} catch (RuntimeException e) {e.printStackTrace();} catch (Exception re) {re.printStackTrace();}
}

10.找出以下程序中存在的問題,并修改2

public class Father {public void sayHello() throws IOException {throw new IOException("Father IOException");}
}public class Son extends Father {public void sayHello() throws Exception {throw new Exception("Son Exception");}
}
//程序中存在的問題:
在編譯時子類的sayHello方法時會出現編譯異常,因為在java中重寫方法拋出的異常不能是原方法拋出異常的父類,這里sayHello方法在父類中拋出了IOException,所有在子類中的sayHello方法只能拋出IOExcepition 或是其子類,但不能是其父類/*** 修改后的程序 ***/    
public class Father {public void sayHello() throws IOException {throw new IOException("Father IOException");}
}
public class Son extends Father {//結論:子類重寫父類方法時,只要保證和父類中的方法一模一樣,就可以避免語法上的問題public void sayHello() throws IOException {throw new IOException("Son Exception");}
}

11.找出以下程序中存在的問題,并修改3

public static void method() {//拋出一個異常對象throw new RuntimeException();//運行時異常
}public static void main(String args[]) {//在main方法中,使用捕獲,來處理方法拋出的異常try{method();}catch(IOException e) {//IOException是編譯時異常e.printStackTrace();}
}//程序中存在的問題:
在編譯時,在IOException時會出現編譯錯誤,因為IOException是編譯期異常,而method方法中并沒有拋出IOException,所以會編譯報錯。/*** 修改后的程序 ***/IOException改為RuntimeException或及其子類,則不會出現編譯報錯。
public static void method() {throw new RuntimeException();
}
public static void main(String args[]) {try{method();}catch(RuntimeException e) {e.printStackTrace();}
}    

總結:

  1. 在書寫多重的catch塊時要保證異常類型的優先級書寫順序,要保證子類靠前父類靠后的原則
  2. 在java中重寫方法拋出的異常不能是原方法拋出異常的父類
  3. 如果方法沒有拋出受檢查類型異常則在調用方法的地方就不能主動添加受檢查類型異常捕獲,但是可以添加運行時異常或者Exception捕獲

12.請定義main()方法,在main()中按以下順序要求編寫代碼:

  • 分別從控制臺接收兩個整數
  • 計算"第一個數 / 第二個數"的結果,并打印;
  • 為了防止第二個數為0導致異常,請在計算時使用異常處理
  • 當出現異常時,向用戶打印:第二個數不能為0!
public class Test1 {public static void main(String[] args) {//分別從控制臺接收兩個整數Scanner scanner = new Scanner(System.in);System.out.print("請輸入第一個數:");int num1 = scanner.nextInt();//為了防止第二個數為0導致異常,請在計算時使用異常處理。當出現異常時,向用戶打印:第二個數不能為0!!System.out.print("請輸入第二個數:");int num2 = scanner.nextInt();//計算“第一個數 / 第二個數”的結果,并打印;try {int div = num1/num2;System.out.println("第一個數/第二個數="+div);} catch (ArithmeticException e) {if(num2==0) {System.out.println("第二個數不能為0");}}}
}

13.請定義main()方法,在main()中按以下順序要求編寫代碼:
定義一個String[]數組如下:

  1. String[] arr = {“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期日”};
  2. 請用戶輸入一個整數1–7的值:
  3. 根據用戶輸入,從數組中取出對應的星期名稱,例如:用戶輸入:1 程序提示:星期一
  4. 為了防止用戶輸入小于1或者大于7的值,請使用異常處理從數組中取出對應的"星期名稱",在異常處理中打印:輸入錯誤!
public class Test2 {public static void main(String[] args) {String[] arr = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};System.out.print("請輸入一個1-7的值:");Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();//從數組中取出對應的星期幾try{String week = arr[num - 1];System.out.println(week);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("輸入錯誤!!");}}
}

14.異常練習

  1. 定義一個"年齡異常類":AgeException,使其繼承自RuntimeException,并添加無參、String參數的構造方法;
  2. 定義一個"性別異常類":SexException,使其繼承自RuntimeException,并添加無參、String參數的構造方法;
  3. 定義一個Student類,屬性:姓名、性別、年齡。
  4. 在性別的set方法中判斷是否是男/女,如果不是則拋出:性別異常
  5. 在年齡的set方法中判斷年齡是否是15–50之間,如果不是則拋出:年齡異常
  6. 編寫測試類,創建一個Student對象,并在try{}中調用setXxx()方法為對象屬性賦值,在catch()中打印年齡錯誤。

AgeExeption

public class AgeException extends RuntimeException{public AgeException() {}public AgeException(String message) {super(message);}
}

SexException

public class SexException extends RuntimeException{public SexException() {}public SexException(String message) {super(message);}
}

Student

public class Student {private String name;private String sex;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {if(!sex.equals("男")&&!sex.equals("女")){throw new SexException("性別異常");}this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {if(age<15||age>50) {throw new AgeException("年齡異常");}this.age = age;}
}

測試類

public class Test {public static void main(String[] args) {Student student = new Student();try{student.setAge(100);} catch (AgeException e) {System.out.println(e.getMessage());}}
}

15.異常練習2

  • 寫一個方法實現用戶登錄,傳入用戶名和密碼
  • 如果用戶名錯誤,就拋出自定義登錄異常(LoginException),異常信息為用戶名不存在。
  • 如果密碼錯了就也拋出登錄異常,異常信息為密碼錯誤
  • 如果用戶名和密碼都對了,輸出: 歡迎xxx

說明:正確用戶名和密碼都是admin

//編譯時異常
public class LoginException extends Exception {public LoginException() {super();}public LoginException(String message) {// 一定要調用父類的構造方法super(message);}
}public class TestDemo {// a)提供一個用于登陸的方法login(String name,String pwd),在放方法中public static void login(String name, String pwd) throws LoginException {// i.如果用戶名錯誤,就拋出自定義登陸異常(LoginException),異常信息為用戶名不存在if (!"admin".equals(name)) {throw new LoginException("用戶名:" + name + "不存在");}// ii.如果密碼錯了就也拋出登陸異常,異常信息為密碼錯誤.if (!"admin".equals(pwd)) {throw new LoginException("密碼錯誤");}// iii.如果能來到下面,就說明用戶和密碼都是對的,輸出: 歡迎xxxSystem.out.println("歡迎" + name);}public static void main(String[] args) {try {// i.調用login方法,傳入錯誤用戶名,運行程序,報運行時異常,然后注釋這行代碼login("admin", "123456");// ii.調用login方法,傳入正確用戶名,錯誤的命名,運行程序,報運行時異常,然后注釋這行代碼// login("admin", "123");// iii.調用login方法,傳入正確的用戶名和密碼//ogin("admin", "admin");} catch (LoginException e) {e.printStackTrace();}}
}

16.模擬注冊用戶,按照以下要求實現相關功能:

  • 提示用戶在控制臺輸入手機號碼,并接收
  • 判斷該手機號碼是否是11位,是否都是數字,其余可以不做判斷,如果不符合任意一項,則提示用戶"注冊用戶失敗"
  • 將手機號的后四位獲取出來輸出到控制臺上

提示:使用異常解決驗證手機號是數字的問題

public class Test {public static void main(String[] args) {//接收鍵盤錄入的手機號System.out.println("請錄入手機號:");String phone = new Scanner(System.in).next();//手機號是否為11位、手機號是否為純數字if(phone!=null && phone.length()==11 && validate(phone)){System.out.println("手機號末尾4位數字:"+phone.substring(7));}else {System.out.println("注冊用戶失敗!");}}//驗證手機號是否為純數字public static boolean validate(String phone) {try {//String -> longlong num = Long.parseLong(phone);/*如果字符串不是純數字,轉換為long類型時,會引發異常*/} catch (Exception e) {//String轉long類型發生異常時,不是數字,就返回falsereturn false;}//當String轉long類型沒有任何問題,說明是數字,返回truereturn true;}
}

17.定義一個方法 能接受一個整數(這個整數大于3) 打印0到這個整數(包含)之間的所有的偶數
例如: 接受的數字是6則調用完方法打印出來的偶數是 0 2 4 6
接受的數字是 5則調用完方法打印出來的偶數是 0 2 4
操作步驟描述
1.創建一個測試類,在測試類中創建上述方法
2.定義一個無返回值,有參數的方法
3.在方法內部把符合條件的數字打印
4.在主方法中調用這個方法,并傳入數字15進行測試

import java.util.Scanner;/*
1 定義一個方法 能接受一個整數(這個整數大于3) 打印0到這個整數(包含)之間的所有的偶數*/
public class Test {public static void  method(){Scanner scanner=new Scanner(System.in);System.out.println("請輸入要接收的數據");int num= scanner.nextInt();//鍵盤錄入數據int i=0;if(num>3&&num%2==0)//判斷大于3的偶數{/*循環輸出*/while (i<=num){System.out.print(i+"\t");i+=2;//每次自增2}}/*循環輸出*/else if(num>3&&num%2==1){while (i<=num){System.out.print(i+"\t");i+=2;}}}public static void main(String[] args) {method();}
}

18.隨機產生兩個整數,隨機數的范圍均是[1,100],定義方法求這兩個整數的和并打印和值

1.創建一個測試類
2.在主方法中使用隨機數產生兩個范圍是[1,100]的隨機數
3.定義一個求兩個整數和的方法
4.在主方法中調用這個求和方法得到結果值,并打印

import java.util.Random;public class Test {public  static void method(){Random random=new Random();//導入Random類,用于產生隨機數int num1=random.nextInt(100)+1;//定義隨機數num1System.out.println("隨機數num1="+num1);int num2=random.nextInt(100)+1;//定義隨機數num2System.out.println("隨機數num2="+num2);System.out.println("num1+num2="+(num1+num2));//這兩個整數的和并打印和值}public static void main(String[] args) {method();//調用方法}
}

19.主方法中給定數組int[] arr= {20,10,40,30,50,60};定義一個方法可以接受這個給定的數組并返回這個數組中元素的最小值

  • 創建一個測試類,在測試類中寫該方法
  • 定義一個方法可以接收一個整型的一維數組
  • 在方法內部求出數組元素的最小值,并把這個最小值返回
  • 在主方法中調用上述方法傳遞數組arr,得到數組中元素的最小值并打印
public class Test {public static void method(int[] arr)//定義method()方法并設置形參,傳入數組arr{int min=arr[0];//定義最小值min并且把 數組元素第一個值arr[0]賦值給minfor(int i=1;i< arr.length;i++){/*if里面的表達式用于找出最小值*/if(min>arr[i]){min=arr[i];}}System.out.println("arr數組里面的最小值:"+min);}public static void main(String[] args) {int[] arr= {20,10,40,30,50,60};method(arr);//調用并接收數組arr}
}

20.定義一個方法,求出給定的數字在給定int型數組中出現的次數,如果一次沒有出現則返回0
如:給定數字3 求出3在數組 int[] arr = {3,4,3,5,7,9};中出現的次數

public class Test{public  static void method2(int[] array)//定義數組{int[] result={};//定義一個空數組,下面可以用于賦值for(int i=0;i< array.length;i++){result=method(array,array[i]);//將每個數組元素arraty[i]以及出現的次數存儲在result[] 數組里面System.out.println("指定數字:"+result[0]+"在數組中的出現次數是:"+result[1]);//輸出結果}}public static int[] method(int[] arr,int num)//定義形參:數組arr和數字num{int count=0;//定義conut變量用于統計次數for(int i=0;i< arr.length;i++){if(num==arr[i]){count++;//次數}}int[] result={num,count};//定義一個數組result用于存儲,指定數字num和該數字出現的次數return result;//返回數組}public static void main(String[] args) {int[] arr = {3,4,3,5,7,9};//定義數組arrmethod2(arr);}
}

21.定義一個方法,查找指定數字在數組中出現的索引(若出現多次,多次打印)
如: 數組{1,2,3,2} 要查找的數是2 則方法內部會打印索引值 1 3
數組{1,2,3,2} 要查找的數是5 則方法每部會打印 “數組中沒有這個數字”

public class Test {public static  int arrlen(int a,int[] arr){int  count=0;if(arr.length==0){System.out.println("數組里面沒有該數字");}for (int i = 0; i < arr.length; i++) {if(a==arr[i]){System.out.println("指定數字在數組里面的位置是:"+i);count++;}}return count;//該數字出現的個數}public static void main(String[] args) {int[] arr={2,4,6,7,10,10,330,5};int a=10;//arrlen(a,arr);int len=arrlen(a,arr);System.out.println("該數字出現的次數是:"+len);}
}

22.方法練習
1.鍵盤錄入一個整數(正數或者負數都可以,但是符號位不算有效的數字位)
2.定義一個方法,該方法的功能是計算該數字是幾位數字,并將位數返回
3.在main方法中打印該數字是幾位數
4.演示格式如下:
(1)演示一:
請輸入一個整數:1234
控制臺輸出:1234是4位數字
(2)演示二:
請輸入一個整數:-34567
控制臺輸出:-34567是5位數字

/*(1)演示一:請輸入一個整數:1234控制臺輸出:1234是4位數字(2)演示二:請輸入一個整數:-34567控制臺輸出:-34567是5位數字*/
import java.util.Scanner;
public class Test {public  static  void method(){Scanner scanner=new Scanner(System.in);int s=0;//定義一個變量s,為了把s傳給后面的鍵盤錄入數據numint count=0;//定義該變量用于判斷數據num是幾位數System.out.println("請輸入一個數:");int num=scanner.nextInt();//定義鍵盤錄入數據/* (1)If語句用于判斷在正數的情況*/if(num>0){s=num;while(num!=0){num=num/10;count++;}System.out.println("控制臺輸出:"+s+"是"+count+"位數");}/*(2)If語句用于判斷在負數的情況*/else  if(num<0){s=num;num=-num;while(num!=0){num=num/10;count++;}System.out.println("控制臺輸出:"+s+"是"+count+"位數");}/*(3)當輸入數據是0的時候*/else{System.out.println("輸入數據是一位數:"+0);}}public static void main(String[] args) {method();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215395.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215395.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215395.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

當MongoDB主鍵為String時,mongoTemplate無法根據id查詢的問題

MongoDB推薦使用ObjectId作為主鍵&#xff0c;但國內的開發都知道&#xff0c;事情往往不如人所愿&#xff0c;當我們真的出現了“_id”主鍵的類型為String時&#xff0c;且還必須想用mongoTemplate.findOne或findList時&#xff0c;直接使用該方法會導致查詢結果為空。 因為m…

https 協議

目錄 加密方式 對稱加密 非對稱加密 非對稱加密 非對稱加密 非對稱加密 對稱加密 AC證書 AC證書內容 數據摘要 數據簽名 在我們前面學習的http協議里面&#xff0c;我們發送的內容都是明文傳輸的&#xff0c;所以在安全上并不安全&#xff0c;但是在現在信息發達的時…

Java高級技術:優化性能與擴展性的最佳實踐

標題&#xff1a;Java高級技術&#xff1a;優化性能與擴展性的最佳實踐 摘要&#xff1a;本文將介紹Java中一些高級技術&#xff0c;以提高性能和代碼的擴展性。本文不包括反射和并發編程&#xff0c;旨在幫助開發者進一步提升Java應用程序的質量和可維護性。 優化性能的最佳實…

面試題目總結(三)

1. Spring、Springboot、springMVC、Spring Cloud 的區別&#xff1a; Spring&#xff1a;Spring 是一個開源的、輕量級的Java框架&#xff0c;提供了豐富的功能和組件&#xff0c;用于構建企業級應用程序。Spring框架包含了很多模塊&#xff0c;包括核心容器、數據訪問、事物…

MATLAB算法實戰應用案例精講-【數模應用】漫談機器學習(七)

目錄 幾個高頻面試題目 機器學習算法工程師需要掌握哪些編程語言? 1.Python 2. C# 3.JavaScript 4. R 5.Java

Linux之Apache服務器安裝及配置

一、Apache服務器簡介 Apache HTTP Server&#xff08;簡稱Apache&#xff09;是Apache軟件基金會的一個開放源碼的網頁服務器&#xff0c;可以在大多數計算機操作系統中運行&#xff0c;由于其多平臺和安全性被廣泛使用。Apache曾經是世界使用排名第一的Web服務器軟件&#xf…

VSCODE連接遠程服務器

安裝ssh插件 根據你的操作系統選擇對應的版本進行下載和安裝。 安裝完成之后&#xff0c;啟動vscode&#xff0c;選擇左側Extensions 選項卡&#xff0c;在輸入框搜索 remote &#xff0c;選擇安裝Remote-SSH插件。 安裝完成之后會在左側新增一個選項卡Remote Explorer&#xf…

肥貓游戲報價器|計價器|王者榮耀代練陪練等游戲報價器軟件介紹說明

目錄 1. 前言2. 軟件著作權3. 軟件使用說明3.1 進入軟件3.2 用戶登錄3.3 首頁3.4 報價器3.4.1 總體介紹3.4.2 王者報價器3.4.3 LOL手游報價器3.4.4 英雄聯盟報價器3.4.5 云頂之弈報價器3.4.7 王者水晶報價器3.4.8 和平精英報價器3.4.9 蛋仔派對報價器3.4.10 穿越火線報價器3.4.…

kafka學習筆記--broker工作流程、重要參數

本文內容來自尚硅谷B站公開教學視頻&#xff0c;僅做個人總結、學習、復習使用&#xff0c;任何對此文章的引用&#xff0c;應當說明源出處為尚硅谷&#xff0c;不得用于商業用途。 如有侵權、聯系速刪 視頻教程鏈接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;從入門到調優…

Linux mc命令教程:如何有效地使用mc命令(附案例詳解和注意事項)

Linux mc命令介紹 mc命令是Linux中的一個視覺文件管理器&#xff0c;全稱為Midnight Commander。它提供了一個用戶友好的界面&#xff0c;使得在Linux環境中的文件和目錄管理變得更加直觀和方便。mc命令支持鼠標操作和顏色顯示&#xff0c;同時也提供了一套菜單接口&#xff0…

TypeScript 常用高級類型

目錄 前言&#xff1a; TypeScript 常用高級類型 基本概念 高級類型 1. 交叉類型&#xff08;Intersection Types&#xff09; 2. 聯合類型&#xff08;Union Types&#xff09; 3. 映射類型&#xff08;Mapped Types&#xff09; 4. 條件類型&#xff08;Conditional…

GGML 或GGUF的14種不同量化模式說明

查看 TheBloke/Llama-2–13B-chat-GGML 存儲庫中的文件&#xff0c;我們可以看到 14 種不同的 GGML 模型&#xff0c;對應于不同類型的量化。它們遵循特定的命名約定&#xff1a;“q” 用于存儲權重的位數&#xff08;精度&#xff09; 特定變體。以下是所有可能的量化方法及其…

Pytorch-Transformer軸承故障一維信號分類(三)

目錄 前言 1 數據集制作與加載 1.1 導入數據 第一步&#xff0c;導入十分類數據 第二步&#xff0c;讀取MAT文件驅動端數據 第三步&#xff0c;制作數據集 第四步&#xff0c;制作訓練集和標簽 1.2 數據加載&#xff0c;訓練數據、測試數據分組&#xff0c;數據分batch…

據房間Id是否存在,判斷當前房間是否到期且實時更改顏色

重點代碼展示&#xff1a; <template><el-col style"width: 100%;height: 100%;"><el-col :span"20"><el-card class"room_info"><avue-data-icons :option"option"></avue-data-icons></el-…

RT-DETR算法優化改進:輕量化自研設計雙卷積重新設計backbone和neck,完成漲點且計算量和參數量顯著下降

??????本文自研創新改進:雙卷積由組卷積和異構卷積組成,執行 33 和 11 卷積運算代替其他卷積核僅執行 11 卷積,YOLOv8 Conv,從而輕量化RT-DETR,性能如下表,GFLOPs 8.1降低至7.6,參數量6.3MB降低至5.8MB RT-DETR魔術師專欄介紹: https://blog.csdn.net/m0_637742…

ubuntu-c++-可執行模塊-動態鏈接庫-鏈接庫搜索-基礎知識

文章目錄 1.動態鏈接庫簡介2.動態庫搜索路徑3.運行時鏈接及搜索順序4.查看可運行模塊的鏈接庫5.總結 1.動態鏈接庫簡介 動態庫又叫動態鏈接庫&#xff0c;是程序運行的時候加載的庫&#xff0c;當動態鏈接庫正確安裝后&#xff0c;所有的程序都可以使用動態庫來運行程序。動態…

Android帝國之日志系統--logd、logcat

本文概要 這是Android系統進程系列的第四篇文章&#xff0c;本文以自述的方式來介紹logd進程&#xff0c;通過本文您將了解到logd進程存在的意義&#xff0c;以及日志系統的實現原理。&#xff08;文中的代碼是基于android13&#xff09; Android系統進程系列的前三篇文章如下…

C#基礎與進階擴展合集-基礎篇(持續更新)

目錄 本文分兩篇&#xff0c;進階篇點擊&#xff1a;C#基礎與進階擴展合集-進階篇 一、基礎入門 Ⅰ 關鍵字 Ⅱ 特性 Ⅲ 常見異常 Ⅳ 基礎擴展 1、哈希表 2、擴展方法 3、自定義集合與索引器 4、迭代器與分部類 5、yield return 6、注冊表 7、不安全代碼 8、方法…

MATLAB中cell函數的用法

cell用法 在MATLAB中&#xff0c;cell 是一種特殊的數據類型&#xff0c;用于存儲不同大小和類型的數據。cell 數組是一種容器&#xff0c;每個元素可以包含任意類型的數據&#xff0c;包括數值、字符串、矩陣、甚至其他的 cell 數組。 以下是 cell 數組的基本語法和示例&…

gitblit自建git倉庫

安裝 java sudo apt-get update sudo apt-get install openjdk-8-jdk # 或者其它你喜歡的版本 驗證&#xff1a; java -version 下載 gitblit https://github.com/gitblit-org/gitblit/releases 解壓/usr/local tar -zxvf gitblit-1.9.3.tar.gz 修改配置文件 nano /usr/local/…