Java基础第5章编程题答案

Java基础第5章编程题答案
Java基础第5章编程题答案

第五章编程题

1.编写一个程序,实现字符串大小写的转换并倒序输出。要求如下:

(1)使用for循环将字符串“HelloWorld”从最后一个字符开始遍历。

(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小

写字符,反之则使用toUpperCase()方法将其转换为大写字符。

(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最

后调用StringBuffer对象的toString()方法,并将得到的结果输出。

【参考答案】

public class Chap5e {

public static void main(String[] args) {

String str="Hell5oWorld";

char[] ch=str.toCharArray();

StringBuffer s=new StringBuffer();

for(int i=ch.length-1;i>=0;i--)

{

if(ch[i]>='A'&&ch[i]<='Z')

s.append(String.valueOf(ch[i]).toLowerCase());

else

if(ch[i]>='a'&&ch[i]<='z')

s.append(String.valueOf(ch[i]).toUpperCase());

else

s.append(String.valueOf(ch[i]));

}

System.out.print(s.toString());

}

}

2. 利用Random类来产生5个20`30之间的随机整数并输出。

【参考答案】

import java.util.Random;

public class Chap5e {

public static void main(String[] args) {

Random r=new Random();

for(int i=0;i<5;i++)

{

System.out.println(r.nextInt(30-20+1)+20);

}

}

}

3. 编程. 已知字符串:”this is a test of java”.

按要求执行以下操作:

(1) 统计该字符串中字母s出现的次数

(2) 取出子字符串”test”

(3) 将本字符串复制到一个字符数组Char[] str中.

(4) 将字符串中每个单词的第一个字母变成大写,输出到控制台。

(5) 用两种方式实现该字符串的倒叙输出。(用StringBuffer和for循环方式分别实现)

(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文

单词,并输出到控制台

【参考答案】

public class Chap53e {

public static void main(String[] args) {

// TODO Auto-generated method stub

//(1)

String string="this is a test of java";

char[] s=string.toCharArray();

int count=0;

for(int i=0;i

if(s[i]=='s')

count++;

System.out.println("s出现了"+count+"次");

//(2)

String str1;

str1=string.substring(string.indexOf('t', 1),

https://www.360docs.net/doc/6815204845.html,stIndexOf('t')+1);

System.out.println("子字符串为"+str1);

//(3)

char[] str=string.toCharArray();

String[] str2=string.split(" ");

//(4)

for(int i=0;i

{ //方法一

str2[i]=String.valueOf(str2[i].charAt(0)).toUpperCase()+str2[i]. substring(1);

// 方法二

str2[i]=str2[i].replaceFirst(String.valueOf(str2[i].charAt(0)), String.valueOf(str2[i].charAt(0)).toUpperCase());

System.out.print(str2[i]+" ");

}

//(5)

StringBuffer sbf=new StringBuffer("this is a test of java");

sbf.reverse();

System.out.println(sbf);

for(int i=string.length()-1;i>=0;i--)

System.out.print(string.charAt(i));

//(6)

String[] strs3=string.split(" ");

System.out.println(Arrays.toString(strs3));

}

}

4. String str = "svd9876fsb543fdg210";将字符串中所有偶数转为int[] 数组,

再对数组冒泡排序,最后使用Arrays输出数组。

【参考答案一】

import https://www.360docs.net/doc/6815204845.html,ng.reflect.Array;

import java.util.Arrays;

public class Chap54e {

public static void main(String[] args) {

String str="svd9876fsb543fdg210";

StringBuffer sf=new StringBuffer();

int a,i,j;

for(i=0;i

{

if(str.charAt(i)>='0'&&str.charAt(i)<='9')

{ a=Integer.valueOf(String.valueOf(str.charAt(i)));

//或 a=Integer.parseInt(String.valueOf(str.charAt(i)));

if(a%2==0)

{sf.append(a);}

}

}

int[] arr=new int[sf.length()];

for(i=0;i

{

arr[i]=Integer.valueOf(String.valueOf(sf.charAt(i)));

}

for(int k:arr)

System.out.println(k);

System.out.println("");

for(i=0;i

for(j=0;j

{

int temp;

if(arr[j]>arr[j+1])

{

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;// TODO Auto-generated method stub }

}

System.out.println(Arrays.toString(arr));

}

}

【参考答案二】

import java.util.Arrays;

public class Chap54e {

public static void main(String[] args) {

// 1.String str = "svd9876fsb543fdg210";将字符串中所有偶数转为int[] 数组,

// 再对数组冒泡排序,最后使用Arrays输出数组。

String str = "svd9876fsb543fdg210";

StringBuilder sb = new StringBuilder();

// 1.遍历字符串,获取每个字符

for (int i = 0; i < str.length(); i++) {

char charAt = str.charAt(i);

// 2.判断当前字符是否为数字,

if (Character.isDigit(charAt)) {// 如果是数字

// 3.再判断该字符是否为偶数如果是偶数

// char--->String--->int

int parseInt =

Integer.parseInt(String.valueOf(charAt));

if (parseInt % 2 == 0) {

// 保存起来

sb.append(parseInt);

}

}

}

System.out.println("sb:" + sb);

// 4.根据保存偶数数字的个数来创建int[]

int[] arr = new int[sb.length()];

for (int i = 0; i < sb.length(); i++) {

char charAt = sb.charAt(i);// 获取sb中下表为i的字符

// 将该字符转为int类型

int parseInt= Integer.parseInt(String.valueOf(charAt));

// 5.将存储的数字赋值给int[]

// 将该int类型的值赋值给数组下表为i的元素

arr[i] = parseInt;

}

System.out.println(Arrays.toString(arr));

// 6.冒泡

maoPao(arr);

// 7.输出

System.out.println(Arrays.toString(arr));

}

/**

* 对数组冒泡排序

*

* @param arr

* 被排序的数组

*/

public static void maoPao(int[] arr) {

for (int i = 0; i < arr.length - 1; i++) {

for (int j = 0; j < arr.length - 1 - i; j++) {

if (arr[j] > arr[j + 1]) {

int temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

}

}

}

}

}

5.利用Math类获取5个随机整数范围在(15,30),不能重复,放在数组中,冒泡排

序后遍历输出。

【参考答案】

public class Chap55e {

public static void main(String[] args) {

int[] arr=new int[5];

int a;

for(int i=0;i<5;i++)

{ a=(int)(Math.random()*(30-15))+15;// TODO Auto-generated method stub

for(int j=0;j<5;j++)

if(a==arr[j])

i--;

else

{arr[i]=a;

break;

}

}

for(int k:arr)

System.out.print(k+" ");

System.out.println("");

for(int i=0;i<4;i++)

for(int j=0;j<4-i;j++)

{

int temp;

if(arr[j]>arr[j+1])

{

temp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=temp;

}

}

for(int k:arr)

System.out.print(k+" ");

}

}

6. 如下字符串:

01#张三#20*02#李四#18*03#王五#22*04#赵六#20*05#田七#21

分割出每个人的信息,样式如下:

01 张三 20

02 李四 18

…..

创建Student类,属性:学号姓名年龄

(1)将这些Student对象放进数组中

(2)查询里面有没有叫田七的学生如果存在则打印学生的具体信息(封装成方法,键盘输入姓名)

(3)计算所有学生的平均年龄,最大年龄,最小年龄

(4)如果存在名字叫张三的将名字改为张兵

【参考答案】

import java.util.*;

class Student {

private String xueHao;

private String name;

private int age;

public String getXueHao() {

return xueHao;

}

public void setXueHao(String xueHao) {

this.xueHao = xueHao;

}

public String getName() {

return name;

}

public void setName(String name) {

https://www.360docs.net/doc/6815204845.html, = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Student() {}

public Student(String xueHao,String name,int age){

this.xueHao=xueHao;

https://www.360docs.net/doc/6815204845.html,=name;

this.age=age;

}

}

//测试类:

public class Test {

public static void main(String[] args){

Scanner input=new Scanner(System.in);

String str="01#张三#20*02#李四#18*03#王五#22*04#赵六#20*05#田七#21";

String[] strs=str.split("[#*]");

System.out.println("1.按要求打印如下:");

for(int i=0;i

System.out.print(strs[i]+" "+strs[i+1]+" "+strs[i+2]); System.out.println();

}

//建立学生数组

Student[] arr=new Student[strs.length/3];

int count=0;

for(int i=0;i

arr[i]=new

Student(strs[count],strs[count+1],Integer.parseInt(strs[count+2]

));

count+=3;

}

System.out.println("2.查询里面有没有叫田七的学生如果存在则打印

学生的具体信息:");

System.out.println("请输入学生姓名:");

String name=input.next();

for(int i=0;i

if(name.equals(arr[i].getName())){

System.out.print(arr[i].getXueHao()+"

"+arr[i].getName()+" "+arr[i].getAge());

}

}

System.out.println();

//3.计算所有学生的平均年龄,最大年龄,最小年龄

System.out.println("3.计算所有学生的平均年龄,最大年龄,最小年龄:");

int ageSum=0;

int ageMax=arr[0].getAge();

int ageMin=arr[0].getAge();

for(int i=0;i

ageSum+=arr[i].getAge();

ageMax=ageMax>arr[i].getAge()?ageMax:arr[i].getAge(); ageMin=ageMin

}

System.out.println("所有学生的平均年

龄:"+ageSum/arr.length);

System.out.println("所有学生中的最大年龄:"+ageMax);

System.out.println("所有学生中的最小年龄:"+ageMin);

//4.如果存在名字叫张三的将名字改为张兵

System.out.println("4.如果存在名字叫张三的将名字改为张兵:");

for(int i=0;i

String temp="张三";

if(temp.equals(arr[i].getName())){

arr[i].setName("张兵");

System.out.println("arr["+i+"]="+arr[i].getName());

}

}

input.close();

}

}

7. 键盘录入一个字符串,统计一个字符串中大写字母字符,小写字母字符,数字

字符出现的次数。(不考虑其他字符)

【参考答案】

import java.util.*;

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

// 1、键盘录入一个字符串,统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)

// String str = "asdBDGSf1243dSB";

//1.键盘录入一个字符串,包含大写小写和数字

Scanner sc = new Scanner(System.in);

System.out.print("录入一个字符串,包含大写小写和数字:");

String str = sc.next();

sc.close();

//2.定义三个统计变量

int upperCaseCount = 0;//大写字符的统计变量

String upperStr = "";

int lowerCaseCount = 0;//小写字符的统计变量

String lowerStr = "";

int digitCount = 0;//数字字符的统计变量

String digitStr = "";

//3.遍历字符串,获取每个字符

for(int i=0;i

char charAt = str.charAt(i);

//4.判断当前字符是大写,小写还是数字

//5.根据判断结果,让对应的统计变量+1

if(charAt>='A' && charAt<='Z'){//大写字符

upperCaseCount++;

upperStr+=charAt;

}

if(charAt>='a' && charAt<='z'){//小写字符

lowerCaseCount++;

lowerStr+=charAt;

}

if(charAt>='0' && charAt<='9'){//数字字符

digitCount++;

digitStr+=charAt;

}

}

//6.输出统计变量的结果

System.out.println(upperStr+"大写字母的个数是:

"+upperCaseCount);

System.out.println(lowerStr+"小写字母的个数是:

"+lowerCaseCount);

System.out.println(digitStr+"数字字符的个数是:

"+digitCount);

}

}

*8. 用户随便输入一个日期(yyyy-MM-dd), 打印出这个日期所在月的每一天, 格式如下:

日一二三四五六

1 2 3 4 5 6

提示:

(1)字符串 --> util.Date

(2) Date --> Calendar

(3)修改日期 --> set

(4)记录用户输入的是哪一天 --> get

(5)判断星期几 --> get

(6)获取该月份的最大天数 --> calendar.getActualMaximum

(7)日期自增 --> add

【参考答案】

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Scanner;

public class TestCalendar {

//public class test{

public static void main(String[] args) {

//创建扫描器

Scanner sc = new Scanner(System.in);

while (true){

//提示用户输入

System.out.println("请输入一个日期,格式为:2018-12-05,输入exit 退出");

//接受用户输入

String temp = sc.nextLine();

if(temp.equalsIgnoreCase("exit")){//判断两个字符串是否相等忽略

大小写

System.out.println("ByeBye");

break;

}

//创建日期格式化对象

//DateFormat日期格式化类

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");

try {

//string --> date

Date date = format.parse(temp);//此处需添加异常

//date --> Calendar

//创建日历对象

Calendar calendar = new GregorianCalendar();

//设置日期为用户输入日期

calendar.setTime(date);

//打印日历抬头

System.out.println("日\t一\t二\t三\t四\t五\t六");

//记录用户输入的日

int currentDate = calendar.get(Calendar.DATE);

//修改日期为此月的第一天

calendar.set(Calendar.DAY_OF_MONTH,1);

//获取第一天是星期几

int week = calendar.get(Calendar.DAY_OF_WEEK);//1-7

//打印缩进

for (int i = 1; i < week; i++) {

System.out.print("\t");

}

//获取当月的最大天数

int maxDate=calendar.getActualMaximum(calendar.DATE);

//循环打印天数

for (int i = 1; i <= maxDate; i++) {

//如果是当天,打印一个*

if(calendar.get(Calendar.DATE) == currentDate){

System.out.print("*");

}

//打印该天

System.out.print(i+"\t");

//如果是周六,打印换行

if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)

{

System.out.println();

}

//天数加一

calendar.add(Calendar.DATE,1);

}}

catch (ParseException e) {

e.printStackTrace();

}

System.out.println();

}

}

}

相关主题
相关文档
最新文档