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的地方會編譯錯誤,因為Exception是RuntimeException 的父類,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();}
}
總結:
- 在書寫多重的catch塊時要保證異常類型的優先級書寫順序,要保證子類靠前父類靠后的原則
- 在java中重寫方法拋出的異常不能是原方法拋出異常的父類
- 如果方法沒有拋出受檢查類型異常則在調用方法的地方就不能主動添加受檢查類型異常捕獲,但是可以添加運行時異常或者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[]數組如下:
- String[] arr = {“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期日”};
- 請用戶輸入一個整數1–7的值:
- 根據用戶輸入,從數組中取出對應的星期名稱,例如:用戶輸入:1 程序提示:星期一
- 為了防止用戶輸入小于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.異常練習
- 定義一個"年齡異常類":AgeException,使其繼承自RuntimeException,并添加無參、String參數的構造方法;
- 定義一個"性別異常類":SexException,使其繼承自RuntimeException,并添加無參、String參數的構造方法;
- 定義一個Student類,屬性:姓名、性別、年齡。
- 在性別的set方法中判斷是否是男/女,如果不是則拋出:性別異常
- 在年齡的set方法中判斷年齡是否是15–50之間,如果不是則拋出:年齡異常
- 編寫測試類,創建一個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();}
}