Java练习:实验五

1.请先阅读下面的程序,确定它的输出结果,再将程序上机运行看输出结果,思考为什么有如此结果?

class ToStringClass
{ public String toString(){ return "toString方法是Object类的重要方法!"; }
  public static void  main(String args[])
{  ToStringClass ts=new ToStringClass();  System.out.println(ts);  }
}

输出结果:toString方法是Object类的重要方法!
解释:
java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。如果一个类没有特别指定父类, 那么默认则继承自Object类。
Object 有 toString 是为了保证所有的对象都能被转换成字符串,至于转成什么样需要由子类自己重写,否则就是返回一串哈希值。在本例中重写了toString方法,所以打印ts时会使用ts的toString方法,因此打印了toString返回的字符串"toString方法是Object类的重要方法"

2.编写一个程序,该程序运行后读入字符串并转换成基本类型数据后输出。要求依次读入十进制整数、二进制整数、实数、布尔型的字符串。

import java.util.*;

public class Exp52 {

	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		String str=new String();
		//十进制整数型字符串转十进制整数
		str=sc.next();
		System.out.println("十进制整数:"+Integer.parseInt(str));
		//二进制字符串转十进制整数
		str=sc.next();
		System.out.println("二进制:"+Integer.parseInt(str,2));
		//布尔型字符串转布尔型
		str=sc.next();
		System.out.println("布尔型:"+Boolean.parseBoolean(str));
		//实数类字符串转实数类
		str=sc.next();
		System.out.println("实数型:"+Float.parseFloat(str));
		sc.close();
	}
}

3.编写一个程序,在其中定义一个String类型变量s和一个StringBuffer类对象sb;从键盘输入100个字母放入sb中,再将sb中的字串赋给s,最后输出“abc”在s中第一次和最后一次出现的位置。观察字串分别含有零个、一个和多个“abc”时的输出结果。

import java.util.Scanner;
public class Exp53 {
	public static void main(String []args)
	{
		String s;
		StringBuffer sb=new StringBuffer();
		Scanner sc=new Scanner(System.in);
		sb.append(sc.next());
		s=sb.toString();
		System.out.println("abc第一次出现:"+s.indexOf("abc"));
		System.out.println("abc最后一次出现:"+s.lastIndexOf("abc"));
		sc.close();
	}

}

说明:
当字符串有0个"abc",输出为-1 -1
当字符串有1个"abc",输出结果为大于等于0的相同数字
当字符串有多个"abc",输出为大于等于0的不同数字

4.编写一个让小朋友做十次加法的程序,要求程序中生成两个不大于50的随机正整数a和b,其中a由Math类的随机函数生成,b则利用机器当前时间的秒数和分数生成,在小朋友回答后要给出对错的判断。(另:了解java.util.Random类)

import java.util.Date;
import java.util.Scanner;
import java.util.Random;
public class Exp54 {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		for(int i=0;i<10;i++) {
		Date dt=new Date();
		int c=dt.getSeconds();
		int a=(int) (Math.random()*50);
		int b=(int)new Random().nextInt(50);
		System.out.println("请给出"+a+"+"+c+"的值");
		int result=sc.nextInt();
		if(result==a+c)
			System.out.println("回答正确!");
		else
			System.out.println("回答错误");
		}
		sc.close();
	}
}
//a,b,c均可以作为加数的生成方式
//但要注意Date类的getSeconds等方法已经过时,不推荐使用。

5.java.util包中有个类“Arrays”,它有个方法“sort(<数组名>)”,功能是将数组按升序排序。请编一程序,在其中创建一个数组,然后利用sort方法进行排序。

import java.util.Arrays;
import java.util.Scanner;
public class EXP55 {
	public static void main(String []args) {
		Scanner sc=new Scanner(System.in);
		int NumArray[]=new int[10];
		System.out.println("请输入10个整数");
		for(int i=0;i<10;i++)
			NumArray[i]=sc.nextInt();
		System.out.println("排序前:");
		for(int i=0;i<10;i++)
			System.out.print(NumArray[i]+" ");
		System.out.println();
		Array s.sort(NumArray);
		System.out.println("排序后:");
		for(int i=0;i<10;i++)
			System.out.print(NumArray[i]+" ");
	}

}

注意:java中的Arrays.sort方法只能升序排序,如果需要降序等功能,可以结合reverse()等

6.编一程序,在其中定义一个代表篮球队的类,它有放置队员姓名的向量并放入队员的姓名,再写两个方法:
1)在向量中查找某人。若找到则输出“找到此人!”,否则输出“查无此人!”。
2)删除队员。先查找该人,若找到则删除,否则输出“无此队员!”。

package javaExp5;
import java.util.Vector;
import java.util.Scanner;
public class Exp56 {
	public static void main(String []args)
	{
		Scanner sc=new Scanner(System.in);
		BasketballTeam BallTeam=new BasketballTeam(sc);
		BallTeam.FindMan(sc);
		BallTeam.DeleteMan(sc);
		sc.close();
	}

}


class BasketballTeam{
	Vector<String> NameVec;
	
	BasketballTeam(Scanner scan)
	{
		
		NameVec=new Vector<String>();
		System.out.println("请输入6名球员姓名");
		for(int i=0;i<6;i++)
		{	NameVec.add(scan.next());}

	}

	void FindMan(Scanner sc)
	{
		System.out.println("请输入查找姓名");
		String name=sc.next();
		if(NameVec.contains(name))
			System.out.println("找到此人!");
		else
			System.out.println("查无此人!");
	}
	
	void DeleteMan(Scanner sc)
	{
		System.out.println("请输入想要删除的姓名");
		String name=sc.next();
		if(NameVec.contains(name))
		{
			NameVec.removeElementAt(NameVec.indexOf(name));
		}
		else
			System.out.println("无此队员!");
	}
}

考察了Vector类的创建,添加,查找等使用方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值