怎么把坐标值保存到一维数组里

最好能提供一个示例

一叶追寻
浏览 5344回答 3
3回答

慕的地8582982

UGZKXNQQJXHBOBECSDZSVMZNCQCSGUDNPTFQTUZJQSCZJGWQNCUVBYLXKDNOHNCYYYYOULLBEOBPXXTDRKXYLROYHDGATNXDQULLAUFSSFLAKRIESQJQLBOEOVEVEIYIPYBFXGBZITJYHXOCYUZIMWAVFCGJGJGWSVLGYVKORUXKBRUEZBRAQNKGCEVEQDWTWMCYZDMSIJGKDJSCNRTLGJTAYKHXYPSVOZFSIYLVBARKBSBXCPTCMADMGBKHBLXBWPYSHRAUKMMNJSZDCZJOCMWJDJHWNQKERATKESVSBGBRFPNQTVMNQOFIHBYFOLJKUXAWHJMOEVPSVYVSIRAENBDFVEBXTJKNZVXAQGHKHDUBWMOYHDGUXATCXUKLUMBRVBUEVOGLCMFZLIUYCSSBAABZLOROHKDQNNMSBVPJTXJIYBYEYWGFFSZNLQGIVVNMZMJYFOFVSQGVEHWFUYOYHQZCQDTBZOROFIEBPEBMBRUDSCMHWFCFWMPXSJRTJAWMQHWGWJYBEBRHJSVEIEBRVYCZBLBJSJMIRHRZQAWFOYUXHXZVXAPMWGWSBKNJPSARGQTWYCLJMHMBRUDZPRKMCTPTJKTDGLHJZVLBKHKBXNDNPYIAVLORUYUEAQZBYUKNCFKUEOCFIYCLHDUYVYVRMOQHCZCYOXOLVYUDVEGWTVMVRMJLOEADGJYBRHKUWMVDMOKIYBXUDTDTIYQSVLOJMWWCOJWQQKKQKTPFILUKSVSHQZJZXALNQMWGWXTDGYIXUQLOXHPSWTWZDUKMPLHXHWUJPZJGWAEVXGJEZCGDZDUJTHAKZKTJAQMKNLUQACTXMALNJYMQSCFWYBEXNIYIENRADAZWKVKARUKUXVQGDHJMWYIL

朕日理万机

题目不是很完整。我理解是比如说把n个(二维)坐标值,保存到长为n的一维数组里,数组里每个元素对应一个坐标?取巧的方法,因为你没说一维数组是什么类型的,比如你定义一个Coordinate类,里面存储坐标值:class Coordinate{     public int x;     public int y; }那你的一维数组就存储这个Coordinate类Coordinate[] array如果你的数组要求是个int类型的,这看起来像是关系到可计算理论,可数和等势的问题了。说白了就是让二维(假设你是二维坐标值)数和自然数建立一一映射的关系。看起来像是个算法题,记得以前见过这种类似的面试题。要求是首先你的坐标值不可以是实数,因为实数本身不可数,更别提二维实数了。假设你的坐标也全是int类型。那么问题转化为如何建立一对<int, int> 和 一个int 的一一对应的关系。如果你学过有理数和自然数是如何一一对应的,应该可以解答,因为有理数可以看做两个自然数的商。假设坐标值非负,那么可以用三角形数法,按照组零:(0,0) 组一(0,1) (1,0) 组二(0,2) (1,1) (2,0) 组三(0,3) (1,2) (2,1) (3,0)这样一路数下来。每一组的横纵坐标相加等于组号,而第k组有k+1个坐标。比如给你个坐标(m,n),先找它对应的组是m+n。在它之前的组总共有(m+n+1)*(m+n)/2个坐标了,再加上(m,n)是这一组的第m+1个坐标(或者叫偏移量),所以(m,n)是第(m+n+1)*(m+n)/2+m+1个坐标,你如果喜欢从零开始计数,就是(m+n+1)*(m+n)/2+m。于是成功将(m,n)映射成为了一个自然数。举例(3,4)对应的自然数就是31,把它作为相应的一维int数组元素。输入(0,0), (1,2), (3,4)输出array={0,7,31}而从自然数解码出二维数组,就把上面的过程反过来。如果考虑负数,比较方便的比如用菱形数法,|x|+|y|=k作为第k组,该组有4k个元素,然后从(0,k)开始顺时针计算偏移量。不赘述了。把二维坐标扩展到任意有限维有理数都是可以的,因为都是可数的。

歌神彭于晏

  百度上找的,,我也要学习一下java将动态产生的坐标值存到数组当中,可以将数据放入二维数组中,如下代码:public class test{    public static void main(String[] args){        int [] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 假设这是你的坐标(1,2),(3,4),……        int [][] arr2 = new int[arr1.length / 2][2]; // 创建一个行为原数组长度一半,列为2的二维数组        for (int i = 0; i < arr1.length; i++) {            // 遍历原数组,赋值给新数组            arr2[i / 2][i % 2] = arr1[i];        }        for (int i = 0; i < arr2.length; i++ ) {            for (int j = 0; j < arr2[i].length; j++ ) {                System.out.print(arr2[i][j] + " ");            }            System.out.println();        }    } }  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java