有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组在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) 个答案