学会面向对象经典练习题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.mzph.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/…