package cn.com.training.student;
import java.util.Scanner;
/*
训练描述
定义一个方法,查找指定数字在数组中出现的位置(若出现多次,多次打印)
如: 数组[1,2,3,2]要查找的数是2 则方法内部会打印索引值 1 , 3
数组[1,2,3,2] 要查找的数是5 则方法每部会打印 “数组中没有这个数字”
操作步骤描述
• 创建一个测试类,在测试类中书写上述代码
• 定义方法可以接受一个int[] brr和一个int key
• 在方法中定义标记 int count = 0 ;
• 方法中遍历brr 对每个元素进行判断是否等于key,如果等于就打印索引值,并count++
• 遍历brr完毕之后 判断count的值,如果还为默认值0,则表示brr中没有key,直接打印”数组中没有这个数字”
• 在主方法中传入数组 arr 和数字 2 或者5 进行测试
*/
public class Training24 {
public static void main(String[] agrs) {
Scanner sc = new Scanner(System.in);
int[] brr = {1,2,3,2};
System.out.println("请输入数字:");
int[] arr = new int[4];
for(int i=0;i<arr.length;i++) {
arr[i] = sc.nextInt();
}
findKey(5,brr);
sc.close();
}
public static int findKey(int key,int[] brr) {
int count = 0;
for(int a=0;a<brr.length;a++) {
if(brr[a]==key) {
count++;
System.out.println((key-1)+","+(key+1));
}else if(brr[a]!=key) {
System.out.println("数组中没有这个数字");
break;
}
}
System.out.println("该数出现的"+count+"次");
return count;
}
}
package cn.com.training.student;
import java.util.Scanner;
/*
综合案例25(输出闰年)
训练描述
定义一个方法,去打印指定两个年份之间所有的闰年年份
如:将2000和2005传入方法,方法执行完毕会打印出这段之间的所有闰年年份
2000和2004
提示:
计算公历年闰年的算法: 四年一闰,百年不闰,四百年再闰,即
满足如下任意一条即使如年
• 年份是整百数的必须是400的倍数才是闰年(能被100整除并且能被400整除)
• 其他年份能被4的是闰年
实例: 2000 是整百数,并且是400的倍数所以是闰年; 2004年是4的倍数是闰年
2100 是整百的倍数但不是400的倍数,所以不是闰年
*/
public class Training25 {
public static void main(String[] agrs){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份:");
int year = sc.nextInt();
int y = leapYear(year);
//System.out.println(y);
//&& || !(&&)
sc.close();
}
public static int leapYear(int year){
int y = year;
for(int i=2000;i<y;i++){
if(i%4==0 || i%400==0 || i%100==0){
System.out.println("所有的闰年"+i+"年");
}
}
return y;
}
}
package cn.com.training.student;
import java.util.Scanner;
/*
综合案例26(求整数的位数)
训练描述
1.键盘录入一个整数(正数或者负数都可以,但是符号位不算有效的数字位)
2.定义一个方法,该方法的功能是计算该数字是几位数字,并将位数返回
3.在main方法中打印该数字是几位数
例如:
请输入一个整数:1234
输出:1234是4位数字
请输入一个整数:-34567
输出:-34567是5位数字
操作步骤描述
略
*/
public class Training26 {
public static void main(String[] agrs){
Scanner sc = new Scanner(System.in);
System.out.println("请输入多位数:");
int num = sc.nextInt();
int count = 0;
do{
num /= 10;
if(num<0){
num *= (-1);
}
count++;
}while(num>0);
System.out.println("该数为"+count+"位数");
sc.close();
}
}
package cn.com.training.student;
import java.util.Scanner;
/*
综合案例27(求阶乘)
编写方法,求任意大于1的整数n的阶乘值,即 n!=1*2*3*……*(n-1)*n
例如:
输入 5
输出 120
训练步骤
使用单重循环或者双重循环
*/
public class Training27 {
public static void main(String[] agrs){
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字:");
int i = sc.nextInt();
int fac = 1;
//2的阶乘 1*2
for(int a=1;a<=i;a++){
System.out.println(a);
fac = fac * a;
}
System.out.println(i+"的阶乘为:"+fac);
sc.close();
}
}
package cn.com.training.student;
import java.util.Scanner;
/*
综合案例28(类和对象)
训练描述:
• 实现从控制台接收一个学员信息,并存储到一个对象中
• 打印这个对象的所有属性值。
操作步骤描述
• 设计,并定义一个学员类:Student,要求有以下属性:
学员编号(String)
姓名(String)
性别(String)
身高(double)
年龄(int)
使用封装的原则,并提供无参和全参的构造方法。
• 定义MainApp类,并包含main()方法。
• 程序启动后,应分别提示用户输入学员编号、姓名等信息。
例如控制台显示:
C:\>请输入学员编号:
C:\>....
C:\>请输入学员姓名:
C:\>....
.................
• 数据接收到程序中,并定义局部变量存储;
• 创建Student对象,通过构造方法将所有数据存储到Student对象中;
• 打印对象中的每个属性值。
*/
public class Training28MainApp {
public static void main(String[] agrs){
Scanner sc = new Scanner(System.in);
Student hwt = new Student();
System.out.println("请输入学员编号:");
hwt.studentNum = sc.next();
System.out.println("请输入学员名字:");
hwt.name = sc.next();
System.out.println("请输入学员性别:");
hwt.sex = sc.next();
System.out.println("请输入学员身高:");
hwt.height = sc.nextDouble();
System.out.println("请输入学员年龄:");
hwt.age = sc.nextInt();
System.out.println("学员编号:"+hwt.studentNum);
System.out.println("名字:"+hwt.name);
System.out.println("性别:"+hwt.sex);
System.out.println("身高:"+hwt.height+"米");
System.out.println("年龄:"+hwt.age+"岁");
sc.close();
}
}
28题需要再新建一个Class,该Class如下:
package cn.com.training.student;
public class Student {
String studentNum;
String name;
String sex;
double height;
int age;
static void hwt(){
}
}
package cn.com.training.student;
/*
案例描述
编写程序,打印如下图形
*
**
***
****
*****
******
*******
步骤描述
设计双重循环
外层循环控制行数,内层循环控制每一行打印内容
*/
public class Training29 {
public static void main(String[] agrs){
for(int i=1;i<=7;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println(" ");
}
}
}
package cn.com.training.student;
/*
综合案例30(类和对象)★★★★★
训练描述
分析以下需求,并用代码实现
1.项目经理类Manager
属性:
姓名 name
工号 id
工资 salary
奖金 bonus
行为:
工作 work()
2.程序员类Coder
属性:
姓名 name
工号 id
工资 salary
行为:
工作 work()
要求:
1.按照以上要求定义Manager类和Coder类,属性要私有,生成空参、有参构造,setter和getter方法
2.定义测试类,在main方法中创建该类的对象并给属性赋值(演示两种方法:setter方法和构造方法)
3.调用成员方法,打印格式如下:
工号为123基本工资为15000奖金为6000的项目经理一龙正在努力的做着管理工作,分配任务,检查员工提交上来的代码.....
工号为135基本工资为10000的程序员方便正在努力的写着代码......
*/
public class Training30MainApp {
public static void main(String[] agrs){
Manager man = new Manager();
man.name = "一龙";
man.id = "123";
man.salary = 15000;
man.bonus = 6000;
System.out.print("工号为"+man.id+"基本工资为"+man.salary+"奖金为"+man.bonus+"的项目经理"+man.name);
work1();
Coder cod = new Coder();
cod.name = "方便";
cod.id = "135";
cod.salary = 10000;
System.out.print("工号为"+cod.id+"基本工资为"+cod.salary+"的程序员"+cod.name);
work2();
}
static void work1(){
System.out.println("正在努力的做着管理工作,分配任务,检查员工提交上来的代码.....");
}
static void work2(){
System.out.println("正在努力的写着代码......");
}
}
30题需要再新建两个Class,如下:
package cn.com.training.student;
public class Manager {
String name;
String id;
int salary;
int bonus;
}
package cn.com.training.student;
public class Coder {
String name;
String id;
int salary;
}