数组在Java中如何读取坐标的奇偶行?
在他悲惨的一生中,海盗亚伯拉罕·布劳费尔特一直在寻找 亚特兰蒂斯失落的宝藏。在主年的一个非常幸运的日子 1642年,他进入了一座废弃的大教堂,这座教堂位于古老森林中,属于一个早已消失的教派 波兰的。他在里面发现了一张神秘的古羊皮纸。羊皮纸 内容如下:
旅行者,如果你想达到你的目标, 通过使破碎的,完整的,在海洋中寻找路径
5,4,5,8,7
在6,3,29,6,4,3后面加上
在前面加上7,6
加在9,8后面
在前面加上5,5 7,8 6,5 6,4
亚伯拉罕·布劳费尔特立刻知道他在处理什么。谜题 这是通往宝藏的安全路线。这条路线很重要 那个时候,大海里到处都是怪物。从这最幸运的一天起, 近400年前,欧洲板块发生了显著的变化。 因此,所有坐标都必须移动(1;0)。 编写一个程序来解决这个难题。这必须在以下步骤中完成 方法:从第一行的坐标开始,添加 第二排在后面,然后添加前面第三排的坐标等。 为这项作业创建一个新的坐标和坐标OW类。这个 后一个类有方法在前面或后面添加一个CoordinateRow,然后 方法在前面或后面添加单个坐标。 拼图的坐标在黑板上的一个文件中。每个协调人 由“=”分隔。一行中的每个坐标由 一个空间。坐标的x和y值用逗号分隔。 读取所有数据后,程序将在屏幕上打印宝藏路线 标准输出
输入文本:
5,44,58,7=6,33,29,64,3=7,6=9,8=5,57,86,56,4t
目前,我似乎只能得到5,4坐标。有些奇怪的东西我看不懂其他坐标。我想这可能与阅读奇偶行有关吧?请帮忙
package module5;
import java.io.PrintStream;
import java.util.Scanner;
import ui.UIAuxiliaryMethods;
public class Pirate1 {
PrintStream out;
CoordinateRow coordinateArray = new CoordinateRow();
CoordinateRow frontArray = new CoordinateRow();
Pirate1() {
out = new PrintStream(System.out);
}
void processAll(Scanner fileScanner) {
fileScanner.useDelimiter("=");
int counter = 0;
String coordinateGroup = " ";
while (fileScanner.hasNext()) {
if (counter == 0 || counter % 2 != 0) {
coordinateGroup = fileScanner.next();
getCoordinates(coordinateGroup);
} else if (counter %2 == 0) {
coordinateGroup = fileScanner.next();
getCoordinatesFront(coordinateGroup);
}
}
}
void getCoordinates(String coordinateGroup) {
Scanner secondScanner = new Scanner(coordinateGroup);
String individualCoordinates = " ";
while (secondScanner.hasNext()) {
Coordinate c = new Coordinate();
individualCoordinates = secondScanner.next();
c = getIndividual (individualCoordinates);
coordinateArray.addCoordinate(c);
}
}
void getCoordinatesFront(String coordinateGroup) {
out.print("test Coordinate");
Scanner secondScanner = new Scanner (coordinateGroup);
String individualCoordinates = " ";
if (frontArray.numberOfElements == 0) {
Coordinate c = new Coordinate();
c = getIndividual (coordinateGroup);
frontArray.addCoordinate(c);
out.print(frontArray.coordinateRow[0].x + ", " + frontArray.coordinateRow[0].y );
} else {
Scanner individualCoordinateScanner = new Scanner(coordinateGroup);
CoordinateRow temp = new CoordinateRow();
while(individualCoordinateScanner.hasNext()) {
Coordinate c = new Coordinate();
c.x =individualCoordinateScanner.nextInt();
c.y = individualCoordinateScanner.nextInt();
temp.addCoordinate(c);
}
for (int i= temp.numberOfElements; i > 0; i--) {
frontArray.shiftAndPlaceCoordinate(temp.coordinateRow[i]);
}
}
}
Coordinate getIndividual(String individualCoordinateline) {
Scanner individualCoordinateScanner = new Scanner(individualCoordinateline);
individualCoordinateScanner.useDelimiter(",");
Coordinate individualCoordinates = new Coordinate();
while (individualCoordinateScanner.hasNext()) {
individualCoordinates.x = individualCoordinateScanner.nextInt();
individualCoordinates.y = individualCoordinateScanner.nextInt();
}
return individualCoordinates;
}
void start() {
Scanner fileScanner = UIAuxiliaryMethods.askUserForInput().getScanner();
processAll(fileScanner);
out.print(coordinateArray.coordinateRow[0].x + " " + coordinateArray.coordinateRow[0].y );
//out.print(frontArray.coordinateRow[0].x + " " + frontArray.coordinateRow[0].y );
}
public static void main(String[] args) {
new Pirate1().start();
}
}
class CoordinateRow {
static final int MAX_SIZE = 20;
Coordinate [] coordinateRow;
int numberOfElements;
CoordinateRow () {
coordinateRow = new Coordinate [MAX_SIZE];
numberOfElements = 0;
}
void addCoordinate (Coordinate coord) {
coordinateRow [numberOfElements] = coord;
numberOfElements = +1;
}
void shiftAndPlaceCoordinate (Coordinate coord) {
if(numberOfElements > MAX_SIZE) {
for(int i= numberOfElements +1; i> 0; --i) {
this.coordinateRow[i]= this.coordinateRow[i-1];
}
numberOfElements += 1;
this.coordinateRow[0] = coord;
}
}
}
package module5;
public class Coordinate {
int x;
int y;
Coordinate () {
this.x = 0;
this.y = 0;
}
Coordinate (int x, int y){
this.x = x + 1;
this.y = y;
}
}
共 (0) 个答案