(1)第一套:
nextInt()接收整数
nextDouble()接收小数
next()接收字符串
注意:遇到空格,制表符,回车就停止接受。这些符号后面的数据就不会接受了
(2)第二套:
nextLine()接收字符串
注意:只有遇到回车才停止
(3)禁止混用以上的两套体系:
弊端:先用nextInt,再用nextLine会导致下面的nextLine接受不到数据;
格斗游戏,每个游戏角色姓名、血量、都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。
例:
package com.PlayGame;
import java.util.Random;
public class Role {
private String name;
private int blood;
public void attack(Role role ){
// 计算造成的伤害1~20
Random random = new Random();
int hurt=random.nextInt(20)+1;
// 剩余血量
int count=role.getBlood()-hurt;
// 对剩余血量做一个验证,为负数则修改为0;
count=count<0?0:count;
// 修改挨揍人的血量
role.setBlood(count);
System.out.println(this.getName()+"打了"+role.getName()+"一下,造成"+hurt+"点的伤害,"+role.getName()+"还剩下"+count+"点的血量");
}
public Role() {
}
public Role(String name, int blood) {
this.name = name;
this.blood = blood;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return blood
*/
public int getBlood() {
return blood;
}
/**
* 设置
* @param blood
*/
public void setBlood(int blood) {
this.blood = blood;
}
public String toString() {
return "XW{name = " + name + ", blood = " + blood + "}";
}
}
public static void main(String[] args) {
Role r1 = new Role("乔峰",100);
Role r2 = new Role("小五",100);
// r1.攻击(xw)方法的调用者攻击参数
while (true){
r1.attack(r2);
if(r2.getBlood()==0){
System.out.println(r1.getName()+"ko了"+r2.getName());
break;
}
r2.attack(r1);
if(r1.getBlood()==0){
System.out.println(r2.getName()+"ko了"+r1.getName());
break;
}
}
}
package com.Test;
import java.util.Random;
public class Role {
private String name;
private int blood;
private String gender;
private String face;//长相随机
String[] boyfaces = {"风流俊雅", "气宇轩昂", "相貌英俊", "五官端正"};
String[] girlfaces = {"沉鱼落雁", "亭亭玉立", "相貌平平", "惨不忍睹"};
// attack受伤描述
String[] attacks_desc={
"%s使出一招【背心钉】,转到对方身后,一掌向%s背心的灵台穴拍去",
"%s使出一招【游空探爪】,转到对方身后,一掌向%s抓去",
"%s使出一招【掌心雷】,转到对方身后,一掌向%s拍去",
};
//injured受伤描述:
String[] injureds_desc={
"%s退了半步,毫发无损",
"%s造成一处淤伤",
"%s一击命中,疼的弯下腰",
};
public Role() {
}
public Role(String name, int blood, String gender) {
this.name = name;
this.blood = blood;
this.gender = gender;
setFace(gender);
}
public void showRoleInfo(){
System.out.println("姓名为:"+getName());
System.out.println("血量为:"+getBlood());
System.out.println("性别为:"+getGender());
System.out.println("长相为:"+getFace());
}
public void attack(Role role) {
Random random = new Random();
int index = random.nextInt(attacks_desc.length);
String kungfu=attacks_desc[index];
// 输出一个攻击的效果
System.out.printf(kungfu,this.getName(),role.getName());
// 计算造成的伤害1~20
int hurt = random.nextInt(20) + 1;
// 剩余血量
int count = role.getBlood() - hurt;
// 对剩余血量做一个验证,为负数则修改为0;
count = count < 0 ? 0 : count;
// 修改挨揍人的血量
role.setBlood(count);
// 受伤描述
// 血量>90 0索引
// 40~90 1索引
// 0~30 2索引
if(count>90){
System.out.printf(injureds_desc[0],role.getName());
} else if (count>=40&&count<=90) {
System.out.printf(injureds_desc[1],role.getName());
}else {
System.out.printf(injureds_desc[2],role.getName());
}
System.out.println( role.getName() + ",还剩下" + count + "点的血量");
}
/**
* 获取
*
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
*
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
*
* @return blood
*/
public int getBlood() {
return blood;
}
/**
* 设置
*
* @param blood
*/
public void setBlood(int blood) {
this.blood = blood;
}
/**
* 获取
*
* @return gender
*/
public String getGender() {
return gender;
}
/**
* 设置
*
* @param gender
*/
public void setGender(String gender) {
this.gender = gender;
}
/**
* 获取
*
* @return face
*/
public String getFace() {
return face;
}
/**
* 设置
*
* @param gender
*/
public void setFace(String gender) {
Random r = new Random();
if (gender == "男") {
int index = r.nextInt(boyfaces.length);
this.face = boyfaces[index];
} else if (gender == "女") {
int index = r.nextInt(girlfaces.length);
this.face = girlfaces[index];
} else {
this.face = "面目狰狞";
}
}
public String toString() {
return "Role{name = " + name + ", blood = " + blood + ", gender = " + gender + ", face = " + face + "}";
}
}
public static void main(String[] args) {
Role r1 = new Role("乔峰", 100, "男");
Role r2 = new Role("小五",100,"男");
r1.showRoleInfo();
r2.showRoleInfo();
// r1.攻击(xw)方法的调用者攻击参数
while (true){
r1.attack(r2);
if(r2.getBlood()==0){
System.out.println(r1.getName()+"ko了"+r2.getName());
break;
}
r2.attack(r1);
if(r1.getBlood()==0){
System.out.println(r2.getName()+"ko了"+r1.getName());
break;
}
}
}
public static void main(String[] args) {
//两部分参数:
//第一部分参数:要输出的内容%s(占位)
// 第二部分参数:填充的数据
System.out.printf("你好啊%s","张三");
System.out.println();
System.out.printf("%s你好啊%s","张三","李四");
}
(1)例1:定义一个数组存储3个商品的对象。
商品的属性:商品的id,名字,价格,库存。
创建三个商品对象,并把商品对象存入2到数组中;
public static void main(String[] args) {
// 创建一个数组
Goods[] arr = new Goods[3];
// 创建三个商品对象
Goods g1 = new Goods("1","华为p40",5999.0,100);
Goods g2 = new Goods("2","保温杯",227.0,50);
Goods g3 = new Goods("3","枸杞",12.7,70);
// 把商品添加到数组中
arr[0]=g1;
arr[1]=g2;
arr[2]=g3;
// 遍历
for (int i = 0;i < arr.length; i++) {
Goods goods=arr[i];
System.out.println(goods.getId()+","+goods.getName()+","+goods.getPrice()+","+goods.getCount());
}
}
(2)例2:定义数组存储3部汽车对象;
汽车的属性:品牌、价格、颜色。
创建三个汽车对象,数据通过键盘录入而来,并把数据存入到数据当中。
public static void main(String[] args) {
Car[] cars = new Car[3];
Scanner sc = new Scanner(System.in);
// 注意:创建对象放在循环里面。否则在外面只会认为是仅一个对象,输入的结果会被最后输入的值覆盖,从而输出三次
for (int i = 0; i < cars.length; i++) {
// 创建汽车对象
Car c = new Car();
System.out.println("请输入品牌,价格,颜色");
String name=sc.next();
c.setName(name);
double price=sc.nextDouble();
c.setPrice(price);
String color=sc.next();
c.setColor(color);
cars[i]=c;
}
for (int i = 0; i < cars.length; i++) {
Car car = cars[i];
System.out.println(car.getName()+" ,"+car.getPrice()+" ,"+car.getColor());
}
}
(3)例3:定义数组存储3部手机对象。
手机的属性:品牌,价格,颜色。
要求,计算出三部手机平均价格。
public static void main(String[] args) {
Phone[] phones = new Phone[3];
Phone c1 = new Phone("小米",599.0,"红色");
Phone c2 = new Phone("华为",9999.0,"黑色");
Phone c3 = new Phone("苹果",5999.0,"白色");
phones[0]=c1;
phones[1]=c2;
phones[2]=c3;
double price=0;
for (int i = 0; i < phones.length; i++) {
Phone phone = phones[i];
price=price+phone.getPrice();
}
System.out.println(price/ phones.length);
}
(4)例4:定义数组存储4个女朋友的对象,
女朋友属性:姓名、年龄、性别、爱好
要求1:计算出四女朋友的平均年龄
要求2:统计年龄比平均值低的女朋友有几个?并把她们的所有信息打印出来。
public static void main(String[] args) {
/*
要求1:计算出四女朋友的平均年龄
要求2:统计年龄比平均值低的女朋友有几个?并把她们的所有信息打印出来。
*/
girlFriends[] gf = new girlFriends[4];
girlFriends gf1 = new girlFriends("小时",23,"女","打麻将");
girlFriends gf2 = new girlFriends("小虎",20,"女","旅游");
girlFriends gf3 = new girlFriends("小妲",19,"女","玩游戏");
girlFriends gf4 = new girlFriends("小商",28,"女","旅游");
gf[0]=gf1;
gf[1]=gf2;
gf[2]=gf3;
gf[3]=gf4;
int age=0;
for (int i = 0; i < gf.length; i++) {
girlFriends girlFriends = gf[i];
age+=girlFriends.getAge();
}
int avg=age/gf.length;
System.out.println(avg);
int count=0;
for (int i = 0; i < gf.length; i++) {
girlFriends girlFriends = gf[i];
if(girlFriends.getAge()
(5)例5:定义一个长度为3的数组,数组存储1~3名学生对象作为初始化数据,学生对象的学号,姓名各个不相同。
学生的属性:学号、姓名、年龄;
要求1:再添加一个学生对象,并在添加的时候进行学号的唯一性;
要求2:添加完成后,遍历所有学生信息;
public static void main(String[] args) {
/*
要求1:再添加一个学生对象,并在添加的时候进行学号的唯一性;
要求2:添加完成后,遍历所有学生信息;
*/
Student[] students = new Student[3];
Student s1 = new Student(110, "dhh", 18);
Student s2 = new Student(121, "xdd", 28);
Student s3 = new Student(212, "css", 24);
students[0] = s1;
students[1] = s2;
students[2] = s3;
// 要求1:再添加一个学生对象,并在添加的时候进行学号的唯一性;
// 新建一个学生对象
Student s4 = new Student(210, "dff", 21);
// 判断学号是否唯一,唯一则添加,不唯一不用添加
boolean flag = contains(students, s4.getSno());
if(flag){
// 已存在,不用添加
System.out.println("当前sno重复,请修改sno后再进行添加");
}else {
// 不存在--就可以添加进数组
// 添加入数组:数组没满直接添加
// 数组满了,在原来的数组长度+1
int count = count(students);
if(count==students.length){
// 已存满
Student[] newStu = creat(students);
newStu[count]=s4;
printStu(newStu);
}else {
// 没有存满
// [s1,s2,null]方法count获取到2,表示数组当中已经有2个元素
// 还有一层意思:如果下一次要添加数据,就是添加到2索引的位置
students[count]=s4;
printStu(students);
}
}
}
public static void printStu(Student[] students){
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if(students[i]!=null){
System.out.println(stu.getSno()+","+stu.getName()+","+stu.getAge()+",");
}
}
}
// 创建一个新数组,长度=老数组的长度+1
// 然后把老数组的元素,拷贝到新数组当中
public static Student[] creat(Student[] students){
Student[] stu1 = new Student[students.length+1];
// 循环得到老数组中的每一个元素
for (int i = 0; i < students.length; i++) {
stu1[i]=students[i];
}
return stu1;
}
public static int count(Student[] students){
int count=0;
for (int i = 0; i < students.length; i++) {
if(students[i]!=null){
count++;
}
}
return count;
}
// 1:我要干嘛? 唯一性判断
// 2:我干这件事情需要什么才能完成? 数组,id
// 3:调用处是否需要继续使用方法的结果? 是
public static boolean contains(Student[] students, int sno) {
for (int i = 0; i < students.length; i++) {
Student stu = students[i];
if(stu!=null){
if (stu.getSno() == sno) {
return true;
}
}
}
return false;
}
要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕后,遍历所有学生信息;
public static void main(String[] args) {
/*
要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕后,遍历所有学生信息;
*/
Student[] stu = new Student[3];
Student s1 = new Student(1, "zs", 18);
Student s2 = new Student(2, "ls", 28);
Student s3 = new Student(3, "ww", 24);
stu[0]=s1;
stu[1]=s2;
stu[2]=s3;
// 要求3:通过id删除学生信息,如果存在,则删除,如果不存在,则提示删除失败。
Scanner sc = new Scanner(System.in);
System.out.println("请输入您要删除的学号:");
int id= sc.nextInt();
int index = index(stu,id);
if(index>=0){
stu[index]=null;
printStu(stu);
}else {
System.out.println("该学号不存在!");
}
}
public static void printStu( Student[] stu) {
for (int i = 0; i < stu.length; i++) {
Student s = stu[i];
if(s!=null){
System.out.println(s.getSno()+","+s.getName()+","+s.getAge());
}
}
}
public static int index( Student[] stu,int id) {
for (int i = 0; i < stu.length; i++) {
Student s = stu[i];
if (s!= null) {
int sno = s.getSno();
if (sno==id) {
return i;
}
}
}
return -1;
}
要求5:查询数组id为“212”学生,如果存在,则将他的年龄+1;
public static void main(String[] args) {
/*
要求5:查询数组id为“212”学生,如果存在,则将他的年龄+1;
*/
Student[] stu = new Student[3];
Student s1 = new Student(1, "zs", 18);
Student s2 = new Student(2, "ls", 28);
Student s3 = new Student(3, "ww", 24);
stu[0]=s1;
stu[1]=s2;
stu[2]=s3;
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的学号:");
int id= sc.nextInt();
int index = index(stu,id);
if(index>=0){
stu[index].setAge(stu[index].getAge()+1);
printStu(stu);
}else {
System.out.println("该学号不存在!");
}
}
public static void printStu( Student[] stu) {
for (int i = 0; i < stu.length; i++) {
Student s = stu[i];
if(s!=null){
System.out.println(s.getSno()+","+s.getName()+","+s.getAge());
}
}
}
public static int index( Student[] stu,int id) {
for (int i = 0; i < stu.length; i++) {
Student s = stu[i];
if (s!= null) {
int sno = s.getSno();
if (sno==id) {
return i;
}
}
}
return -1;
}