Java Examples

Java ExamplesZ-transformation题目输入输出用例ImplementsLiteral题目要求示例输入说明ImplementsMatrixCalculationImplementsStream题目要求 示例ImplementsCSVFile题目要求示例输出ResponseTime题目要求示例ImplementsFindPrimes 找质数题目要求输入格式输出格式示例 CurrencyExchange题目要求示例Bad MatrixImplementsMy MatrixImplementsTicTacToeLambda IntepreterAST.javaAbstraction.javaApplication.javaIdentifier.javaTokenType.javaLexer.javaParser.java

Z-transformation

题目

从控制台中读入一行字符串,随后读入一行数字N。

输出该字符串经过N行的Z型变换后的结果。

Z型变换的形式见用例。

输入

第一行为待处理的字符串。

第二行为需要变换成的行数N。1<=N<=10

输出

N行经过变换后的字符串。

用例

输入:

输出:

解释:Z型变换将字符串分为了N行,随后按照Z字形的顺序逐个向每行填入字符。

输入:

输出:

请注意每行字符间的空格。

Implements

 

Literal

题目要求

从控制台中输入一个“字面量”字符串。判断这个字符串在java中对应哪种类型,并将其输出。

示例

输入:

输出:

输入:

输出:

输入:

输出:

输入:

输出:

输入说明

输入一定能对应一种基本数据类型。

Implements

MatrixCalculation

实现矩阵的加法、乘法以及控制台输出

其中加法和乘法需要有两种实现方式

  1. 传入一个矩阵进行2个矩阵的操作
  2. 从控制台(console)读入一个矩阵,再进行操作

所有的数据均为int型

输入数据均默认为正确数据,不需要对输入数据进行校验

Implements

Stream

题目要求

假如给定一个名称列表,其中一些名称包含一个字符。系统会要求您在一个逗号分隔的字符串中返回名称,该字符串中不包含单字母的名称,每个名称的首字母都大写。
分别用命令式范式和函数式范式实现。
注意:使用英文标点符号。

示例

对于 List("neal", "s", "stu", "j", "rich", "bob"),输出为: Neal,Stu,Rich,Bob

Implements

CSVFile

题目要求

编写一个程序,读入以下数据文件:

Ling,Mai,55900
Johnson,Jim,56500
Zarnecki,Sabrina,51500

处理该记录,并以格式化的表格形式显示结果,间隔均匀(4个空格)。
注意:标点符号均为英文标点符号。

示例输出

Last First Salary
Ling Mai 55900
Johnson Jim 56500
Zarnecki Sabrina 51500

ResponseTime

题目要求

编写一个程序,提示输入某个网站的响应时间,以毫秒表示,不断让用户输入值,直到用户输入“done”。该程序应打印平均时间(mean),最小时间(min),最大时间(max)和标准差(standard deviation)。

注意:所有输入均为正整数,平均值和标准差保留两位小数,其他输出为整数。

示例

输出: Enter a Number:
输入: 100
输出: Enter a Number:
输入: 200
输出: Enter a Number:
输入: 1000
输出: Enter a Number:
输入: 300
输出: Enter a Number:
输入: done
输出: Numbers:100,200,1000,300
输出: The average is 400.00.
输出: The minimum is 100.
输出: The maximum is 1000.
输出: The standard deviation is 353.55.

Implements

FindPrimes 找质数

题目要求

是不是所有的偶数(除了 2),都可以用两个质数相加得到呢?

输入格式

第一行输入仅一个整数 t 表示测试组数。 接下来 t 行,每行仅一个整数 n

输出格式

输出两个整数,空格隔开,因为答案可能有多个,所有要求输出的这两个整数是所有答案中字典序最小的

示例

输入:
3
4
8
20
输出:
2 2
3 5
3 17

CurrencyExchange

题目要求

编写一个货币兑换程序,将欧元兑换成美元。提示输入手中的欧元数,以及欧元的当前汇率。打印可以兑换的美元数。

注意:使用英文标点符号,输出中的数字保留两位小数。

示例

输出: How many euros are you exchanging?
输入: 81
输出: What is the exchange rate?
输入: 137.51
输出: 81.00 euros at an exchange rate of 137.51 is 111.38 U.S. dollars.

Bad Matrix

Implements

My Matrix

Implements

TicTacToe

两个玩家,一个打叉(X),一个打圈(O), 轮流在n乘n的格上打自己的符号,n最多9,最少为3,注意棋盘是方的。 游戏落子有两种模式: 1.正常规则落子 2.当棋盘上己方已经落下5个子,之后在落下一个子之前,要移去第1个子。即棋盘上最多出现5个己方棋子。

游戏胜利条件有两种模式: 1.己方棋子横、竖、斜三个字连成一线即赢,若棋盘填满双方仍未分胜负则为平局 2.己方棋子横、竖三个字连成一线即赢,若棋盘填满双方仍未分胜负则为平局

我们在游戏开始时, 即Game类的playGame方法中会传入gamemode字符串来选择游戏模式,gamemode字符串长度为2,每个字符都只有0或1两种可能,其中第一个字符代表落子模式,第二个字符代表胜负条件 00:正常规则落子,横竖斜均能胜利 01:正常规则落子,横竖能胜利 10:5子模式,横竖斜均能胜利 11: 5子模式,横竖能胜利

本文件夹内附带的示意图是一个X方取胜的例子。其中棋盘大小为3*3,正常落子,横竖斜均可胜利

要求:

  1. 基本要求 请从面向对象思想出发利用Java语言实现这个Tic-Tac-Toe游戏。 为了便于识别棋子的位置,棋盘上行以1至9表示,列以A至I表示,根据棋盘大小,行从1开始计数,列从A开始记字母 下图中棋盘大小为4*4,O玩家分别在B1,B3,C4落子。坐标每次落子之后显示如下图案(X玩家用大写X,O玩家用大写O,空子用下划线表示,每一个字符之间用空格隔开,A左边有两个空格,每一行结束都有一个换行符): A B C D 1 X O _ _ 2 _ _ X _ 3 _ O X _ 4 _ _ O X 我们已提供部分代码。请添加并修改你觉得需要的其它类和方法,完成该游戏。
  2. 输出规定与判题方法 在进行判题时,我们会调用你的Game类的playGame(String gameMode, String moveStr, int size)方法,传入游戏模式字符串(例如01),和下棋指令字符串(例如A1,B1,B2,B3,C3),以及棋盘大小n(棋盘是方的) 你的程序需要从标准输出中输出如下内容: A B C 1 X _ _ 2 _ _ _ 3 _ _ _ A B C 1 X O _ 2 _ _ _ 3 _ _ _ A B C 1 X O _ 2 _ X _ 3 _ _ _ A B C 1 X O _ 2 _ X _ 3 _ O _ A B C 1 X O _ 2 _ X _ 3 _ O X playGame方法除了要输出棋盘的状态变化以外,还要返回比赛结果。 可以看到,在示例中X玩家胜利,因此返回Result.X_WIN

我们会同时检查【playGame方法返回的比赛结果】与【标准输出的内容】作为判题的依据。

  1. 注意事项

4.额外说明 本题中棋盘的大小、落子的策略以及判断输赢的策略会发生改变 对于落子和判断输赢未来可能会添加新的策略,为了应对这种变更需要更加灵活的设计,请自行添加修改相应的类、接口以及继承关系来完成设计应对变更 本题不仅可以修改已有的文件,还可以添加任意多的文件,甚至删去已有的文件,实现方式自行选择(若要删去文件,请不要删去要测试方法所在的类) 题目中的3*3仅为范例,需要灵活修改。

Lambda Intepreter

(多文件警告)

AST.java

Abstraction.java

Application.java

Identifier.java

TokenType.java

Lexer.java

Parser.java