corejava练习题兼答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 栈是一种常用的数据结构,其特点是存储数据时“先进后出”。写一个类用来模拟栈这种数据结构,要求底层使用数组存储数据,并给出相应的进栈和出栈的方法。
package text;


import java.util.Scanner;
public class Text1{
public static void main(String[] args) {
int n;
for(int x=0;x<10;x++){
int max=100;
Scanner s=new Scanner(System.in);
System.out.println("输入0退出程序!");
System.out.print("输入个数:");
n=s.nextInt();
int[] a=new int[n+1];
System.out.println("请输入元素:");
push(a,n,max);
pop(a,n);
System.out.println("是否退出?0为退出,1为继续!");
int b=s.nextInt();
if(b==0){
System.exit(0);
}
}
}
public static void push(int[] d,int n,int max){
Scanner s=new Scanner(System.in);
int i;
for(i=0;iif(i==max){
System.out.println("栈已满!");
break;
}
else if(i>n){
System.out.println("只能输入"+n+"个数!");

}
else if(i==n){
System.out.println("输入完毕!");
break;
}
else if(iSystem.out.println("请继续输入!");
}
System.out.print("请输入第:"+(i+1)+"个数:");
d[i]=s.nextInt();
if(d[i]==0&&iSystem.out.println("输入为完成,请重新输入!");
System.exit(0);

}
}
System.out.println("栈中元素个数为"+i);
System.out.print("请输入出栈个数:");
}
public static void pop(int[] m,int h){
int j;
Scanner c=new Scanner(System.in);
int e=c.nextInt();
System.out.println("出栈元素为:");
for(j=m.length-1;j>=m.length-e;j--){
if(e<=h){
System.out.print(m[j-1]+" ");
}
else{
System.out.println("出栈数不能比栈中元素大!");
break;
}
}
}
}

2. 将所有学生的课程成绩保留在一个二维数组中,每一行代表一个学生的成绩,每一列代表一门课程的成绩;将每门课程的名称保留在一个一维数组中(课程的下标序号与二维数组的列号匹配);将每个学生的姓名保留在一个一维数组中(学生的下标序号与二维数组的行号匹配);要求编写程序实现成绩的查询,要求程序运行时从命令行输入统计命令及参数,程序则输出结果,例如:
AVGCOU corejava:统计课程corejava的平均分。
AVGSTU 张三:统计学生张三的平均分。
SORT sum:列出总分的排序。
SORT corejava:列出corejava课程的成绩的排序。
SUM 张三:统计学生张三的总分。
GET 张三 corejava:统计张三的corejava课程的成绩。
BREAK : 退出。
package test;

import parator;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class Test {
/** 学生姓名 */
private static String[] students = new String[] { "A", "B", "C"

, "D" };
/** 科目 */
private static String[] courses = new String[] { "语文", "数学", "英语" };
/** 分数 */
private static int[][] scores = new int[][] { { 61, 62, 63 },
{ 74, 75, 76 }, { 87, 88, 89 }, { 93, 94, 95 } };

public static void main(String[] args) {
while (true) {
System.out.println("请输入统计命令及参数:");
Scanner sca = new Scanner(System.in);
String command = sca.nextLine();
if (null == command || "".equals(command)) {
System.out.println("错误指令!");
} else {
// 统计课程
if (command.startsWith("AVGCOU ")) {
displayAVGCOU(command.substring(7).trim());
}
// 统计学生
else if (command.startsWith("AVGSTU ")) {
displayAVGSTU(command.substring(7).trim());
}
// 列出总分的排序
else if (command.equals("SORT sum")) {
displaySortSum();
}
// 列出课程的成绩的排序
else if (command.startsWith("SORT ")) {
displaySortCourse(command.substring(5).trim());
}
// 统计学生的总分
else if (command.startsWith("SUM ")) {
displaySumStu(command.substring(4).trim());
}
// 统计某学生的课程的成绩
else if (command.startsWith("GET ")) {
String[] s = command.split(" ");
if (s.length != 3) {
System.out.println("错误指令!");
} else {
displayStuCourse(s[1], s[2]);
}
}
// 退出
else if (command.equals("BREAK")) {
System.out.println("程序结束!");
break;
} else {
System.out.println("错误指令!");
}
}
}
}

/**
* 统计课程
*
* @param course
*/
private static void displayAVGCOU(String course) {
int index = getIndex(course, courses);
if (-1 == index) {
System.out.println("没有该课程的信息!");
} else {
int sum = 0;
for (int i = 0; i < students.length; i++) {
sum += scores[i][index];
}
System.out
.println("课程" + course + "的平均分为:" + sum / students.length);
}
}

/**
* 统计学生
*
* @param stu
*/
private static void displayAVGSTU(String stu) {
int index = getIndex(stu, students);
if (-1 == index) {
System.out.println("没有该学生的信息!");
} else {
int sum = 0;
for (int i = 0; i < courses.length; i++) {
sum += scores[index][i];
}
System.out.println("学生" + stu + "的平均分为:" + sum / courses.length);
}
}

/**
* 总分排序
*/
private static void displaySortSum() {
Set set = new TreeSet(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int n1 = Integer.parseInt(o1.toString());
int n2 = Integer.parseInt(o2.toString());
return n2 - n1;
}

});
for (int i = 0; i < students.length; i++) {
int sum = 0;
for (int j = 0; j < courses.length; j++) {
sum += scores[i][j];
}
set.add(sum);

}
System.out.print("总分排序(高到低):");
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
System.out.println();
}

private static void displaySortCourse(String course) {
Set set = new TreeSet(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int n1 = Integer.parseInt(o1.toString());
int n2 = Integer.parseInt(o2.toString());
return n2 - n1;
}

});
int index = getIndex(course, courses);
if (-1 == index) {
System.out.println("没有该课程的信息!");
} else {
for (int i = 0; i < students.length; i++) {
set.add(scores[i][index]);
}
System.out.print("课程" + course + "排序(高到低):");
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
System.out.println();
}
}

/**
* 统计学生的总分
*
* @param stu
*/
private static void displaySumStu(String stu) {
int index = getIndex(stu, students);
if (-1 == index) {
System.out.println("没有该学生的信息!");
} else {
int sum = 0;
for (int i = 0; i < courses.length; i++) {
sum += scores[index][i];
}
System.out.println("学生" + stu + "的总分为:" + sum);
}
}

/**
* 统计某学生的课程的成绩
*
* @param stu
* @param course
*/
private static void displayStuCourse(String stu, String course) {
int indexStu = getIndex(stu, students);
int indexCourse = getIndex(course, courses);
if (-1 == indexStu || -1 == indexCourse) {
System.out.println("没有该学生这个科目的信息!");
} else {
System.out.println("学生" + stu + "的课程" + course + "的分数为:"
+ scores[indexStu][indexCourse]);
}
}

/**
* 获取对应的序号
*
* @param s
* @param ss
* @return
*/
private static int getIndex(String s, String[] ss) {
for (int i = 0; i < ss.length; i++) {
if (s.equals(ss[i])) {
return i;
}
}
return -1;
}
}

3. 用字符串保存一首唐诗(五言或七言),要求将这首唐诗按照古文的方式输出出来(从右至左,竖行排列)。
package text;
public class Text3
{
public static void main(String[] args){
char[][] a={{ '床','前','明','月','光',','},{ '疑','是','地','上','霜','。'},{ '举','头','望','明','月',','}, { '低','头','思','故','乡','。'} };
for(int i=0; ifor(int j=0; jSystem.out.print(a[3-j][i]+" ");
}
System.out.print('\n');
}

}

}

4. 基于控制台的五子棋游戏。
package text;
import java.util.Scanner;
public class Text4{
public static void main(String[] args){
char[][] arr=new char[17][17];

arr[0][0]=' ';
for(int i=1;i<11;i++){
arr[0][i]=(char)('0'+(i-1));
arr[i][0]

=(char)('0'+(i-1));
}
for(int i=11;i<17;i++){
arr[0][i]=(char)('a'+(i-11));
arr[i][0]=(char)('a'+(i-11));
}
for(int i=1;i<17;i++){
for(int j=1;j<17;j++){
arr[i][j]='*';
}
}
print(arr);
for(;;){
boolean flag=false;
bFall(arr);
flag=compareB(arr);
if(flag) break;
wFall(arr);
flag=compareW(arr);
if(flag) break;
}

}
public static void bFall(char[][] arr){
System.out.println("黑棋落子:");
Scanner sc=new Scanner(System.in);
String in=sc.next();
char c1=in.charAt(0);
char c2=in.charAt(1);
int hIndex=0;
int sIndex=0;
for(int i=1;ifor(int j=1;jif(c1==arr[i][0]&&c2==arr[0][j]){
hIndex=i;
sIndex=j;
}
}
}
if(arr[hIndex][sIndex]!='*'){
System.out.println("当前的位置上已经有棋子了,请重新输入");
}else{
arr[hIndex][sIndex]='@';
print(arr);
}
}

public static void wFall(char[][] arr){
System.out.println("白棋落子:");
Scanner sc=new Scanner(System.in);
String in=sc.next();
char c1=in.charAt(0);
char c2=in.charAt(1);

int hIndex=0;
int sIndex=0;
for(int i=1;ifor(int j=1;jif(c1==arr[i][0]&&c2==arr[0][j]){
hIndex=i;
sIndex=j;
}
}
}
if(arr[hIndex][sIndex]!='*'){
System.out.println("当前的位置上已经有棋子了,请重新输入");
}else{
arr[hIndex][sIndex]='&';
print(arr);
}
}

public static int crossRight(char[][] arr,int i,int j,char c){
int count=1;
while(j+1count++;
return count;
}

public static int verticalRight(char[][] arr,int i,int j,char c){
int count=1;
while(i+1count++;
}
return count;
}

public static int obliqueRight(char[][] arr,int i,int j,char c){
int count=1;
while(i+1count++;
}
return count;
}

public static int inverseRight(char[][] arr,int i,int j,char c){
int count=1;
while(i+1count++;
}
return count;
}

public static boolean compareB(char arr[][]){
boolean b=false;

for(int i=0;ifor(int j=0;jif(arr[i][j]=='@'){
int count=crossRight(arr,i,j,'@');
if(count==5){
b=true;
print(arr);
System.out.println("黑棋赢了");
}
}
}
}
//比较竖向
for(int i=0;ifor(int j=0;jif(arr[i][j]=='@'){
int count=obliqueRight(arr,i,j,'@');
if(count==5){
b=true;
print(arr);
System.out.println("黑棋赢了");
}
}
}
}

for(int i=0;ifor(int j=0;jif(arr[i][j]=='@'){
int count=obliqueRight(arr,i,j,

'@');
if(count==5){
b=true;
print(arr);
System.out.println("黑棋赢了");
}
}
}
}

for(int i=0;ifor(int j=0;jif(arr[i][j]=='@'){
int count=inverseRight(arr,i,j,'@');
if(count==5){
b=true;
print(arr);
System.out.println("黑棋赢了");
}
}
}
}
return b;
}

public static boolean compareW(char arr[][]){
boolean b=false;

for(int i=0;ifor(int j=0;jif(arr[i][j]=='&'){
int count=crossRight(arr,i,j,'&');
if(count==5){
b=true;
print(arr);
System.out.println("白棋赢了");
}

}
}
}

for(int i=0;ifor(int j=0;jif(arr[i][j]=='&'){
int count=obliqueRight(arr,i,j,'&');
if(count==5){
b=true;
print(arr);
System.out.println("白棋赢了");
}
}
}
}

for(int i=0;ifor(int j=0;jif(arr[i][j]=='&'){
int count=obliqueRight(arr,i,j,'&');
if(count==5){
b=true;
print(arr);
System.out.println("白棋赢了");
}
}
}
}

for(int i=0;ifor(int j=0;jif(arr[i][j]=='&'){
int count=inverseRight(arr,i,j,'&');
if(count==5){
b=true;
print(arr);
System.out.println("白棋赢了");
}
}
}
}
return b;
}

public static void print(char[][] arr){
for(int i=0;ifor(int j=0;jSystem.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}


5. 为某酒店设计一套前台房间管理系统,该系统可以通过在命令行输入命令来为客人办理入住和退房手续。
要求该系统支持通过命令行输入以下命令来进行入住,退房及查询的操作。
search all :查询所有房间的状态
in 1202 张三 :姓名为张三的客人入住1202房间
out 1202:1202房间退房
房间的命名: 最高位和次高位:楼层 从1开始
package text;

import java.util.Scanner;
public class Text5{
public static void main(String[] args){

String rom_rom[][]={
{" "," 1 "," 2 "," 3 "," 4 "," 5 "," 6 "," 7 "," 8 "," 9 "},
{" 1 ","1101","1102","1103","1104","1105","1106","1107","1108","1109"},
{" 2 ","1201","1202","1203","1204","1205","1206","1207","1208","1209"},
{" 3 ","1301","1302","1303","1304","1305","1306","1307","1308","1309"},
{" 4 ","1401","1402","1403","1404","1405","1406","1407","1408","1409"}
};

System.out.println("请输入命令就行操作" +"\n" +
"1为search all:查询所有房间状态" +"\n"+
"2为in 1202张三:姓名为张三的客人入住1202房间" +"\n"+
"3为out 1202

:1202房间退房" +"\n"+
"0为退出");
Scanner sc=new Scanner(System.in);
System.out.println("请输入命令:");
for(int i=0;i<10000;i++){
int cx=sc.nextInt();
if(cx==1){
System.out.println("当前状态为:");
print(rom_rom);
System.out.println("请继续输入命令:");
}
else if(cx==2){
System.out.println("请输入房间号行号列号及姓名!");
putin(rom_rom);
}
else if(cx==3){
System.out.println("请输入所退房的行号及列号!");
out(rom_rom);
}
else if(cx==0){
System.exit(0);
}
else {
System.out.println("输入命令有误!");
}
}

}


public static void print(String[][] rom_rom){
for(int i=0;ifor(int j=0;jSystem.out.print(rom_rom[i][j]+" ");
}
System.out.println();
}
}
public static void putin(String[][] rom_rom ){
Scanner sc1=new Scanner(System.in);
int x=sc1.nextInt();
int y=sc1.nextInt();
String m=sc1.next();
int a=1000+y*100+x;
String b=String.valueOf(a);
if(rom_rom[y][x].equals(b)==false){
System.out.println("此房间以有人住!");
}
else{
for(int i=0;ifor(int j=0;jrom_rom[y][x]=m;
}
break;
}
}
System.out.println("请继续输入命令:");

}


public static void out(String[][] rom_rom ){
Scanner sc1=new Scanner(System.in);
int x=sc1.nextInt();
int y=sc1.nextInt();
int a=1000+y*100+x;
String b=String.valueOf(a);
if(rom_rom[y][x].equals(b)==true){
System.out.println("此房间无人!无需退房!");
}else{
for(int i=0;ifor(int j=0;j
rom_rom[y][x]=b;
}
break;
}


}

System.out.println("请继续输入命令:");
}
}


相关文档
最新文档