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类的创建,添加,查找等使用方法