Tag: 数组

在2Darrays中检查4个连续相同的对角元素(连接4游戏)

我正在努力在Java上实现connect 4 Game。 我差不多完成了模拟游戏的程序。 我使用2D字符数组char [][] board = new char[6][7]; 代表游戏的网格。 我已经实现了checkHorizontal方法来查找是否有4个连续的相同水平元素来检查win条件。 我还实现了checkVertical方法来查找是否有4个连续相同的垂直元素来检查win条件。 我在编写checkDiagonal方法的算法时有点困惑, checkDiagonal方法检查2Darrays中4个连续相同对角线元素的所有可能性。 以下是游戏中对角线胜利案例的2个例子 情况1: * * * * * * * * * * * * * * Y * * * * * * RY * * Y * * YRYRYRR RYRYRYR 案例2: * * * * * * * * […]

在Java中计算数组中的不同值

我正在编写一个代码,我有一个int [a],该方法应该返回唯一值的数量。 示例:{1} = 0个不同的值,{3,3,3} = 0个不同的值,{1,2} = 2个不同的值,{1,2,3,4} = 4个不同的值等。 我不是允许对数组进行排序 。 问题是我的方法可能不起作用。 我的声明有问题,我无法弄清楚。 public class Program { public static void main(String[] args) { int[] a = {1, 2, 3, 1}; System.out.println(differentValuesUnsorted(a)); //run: 4 //should be 3 } public static int differentValuesUnsorted(int[] a) { int values; //values of different numbers if (a.length < 2) […]

计算数组中的次数(Java)

我完全难过了。 我rest了几个小时,我似乎无法想出这个。 这让人心烦意乱! 我知道我需要检查数组中的当前元素,看看它是否出现在数组的其他位置。 想法是输出以下内容: 要求用户输入10个整数,并将这些整数分配给数组(因此“数字”作为方法的参数)。 假设我输入“1,1,2,3,3,4,5,6,7,8”。 打印结果应为“1次发生2次.2次发生1次.3次发生2次.4次发生1次.5次发生1次.6次发生1次.7次发生1次.8次发生1次。” 此打印将以单独的方法完成。 我的代码中的所有内容都有效,除了我创建的用于计算出现次数的方法。 public static int getOccurrences(int[] numbers) { int count = 0; for (int i = 0; i < numbers.length; i++) { int currentInt = numbers[i];; if (currentInt == numbers[i]) { count++; } } return count; } 我知道这里的问题是什么。 我将数组中的当前整数元素设置为变量currentInt。 if语句计算数组中的每个整数元素,因此输出为“[I @ 2503dbd3发生10次”。 如何跟踪数组中每个元素的出现?

Android内存泄漏,EMA可疑:“byte ”由“”加载

我正在写一个小的单活动Android应用程序,并得到内存泄漏错误,因为我找不到原点。 首先,应用程序计算基本内容并以结构化方式显示结果。 计算是微不足道的,虽然有一些图像,但它们大约有50个图标,总共少于4MB。 我已经安装了Eclipse Memory Analyzer并检查了它的堆转储,Leak Suspects Report说: 问题可疑1:由加载的“byte []”的477个实例占用78.116.240(76,46%)个字节。 dominator_tree 我既不知道那些字节数组是什么,也不知道GC根或任何东西,因为数组在统治者树中没有父母。 我不经常为Android编程,我拼命想弄清楚,从今天起这里发生了什么。 当我使用应用程序并观察ADM中使用的堆大小/%时,我直接以80%的使用量开始并随着我的使用而变大。 (也显示1字节数组(byte [],boolean []))直到应用程序在AVD上崩溃,我的真实设备可以处理它更长一点。 我知道我可以把尺寸做得更大,但这对我来说没有解决方案,因为我认为我从一开始就遇到了这个问题,现在它刚刚达到临界点。

(Java)检查数组以增加元素

我正在尝试创建一个检查数组以增加元素的方法。 如果所有元素的顺序递增,则应返回True。 当我比较arr [i + 1]时,我得到一个越界exception。 关于如何使其发挥作用的任何想法。 int[] one = {1,2,3,4,5}; public static boolean isIncreasing(int[]arr) { boolean z = false; for(int i=0; i<arr.length;i++) { if(arr[i]<arr[i+1]) { z = true; } } return z; }

在2d数组中添加对角线值

我有以下2d数组 int [][] array = {{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, {10, 11, 12, 13, 14, 15, 16, 17, 18, 19}, {20, 21, 22, 23, 24, 25, 26, 27, 28, 29}, {30, 31, 32, 33, 34, 35, 36, 37, 38, 39}, {40, 41, 42, 43, 44, 45, 46, 47, 48, […]

为什么在Java中创建MAX_INT大小的数组是不可能的?

我已经阅读了这个问题的一些答案( 为什么我不能创建一个大尺寸的数组?和https://bugs.openjdk.java.net/browse/JDK-8029587 ),我不明白以下内容。 “在GC代码中,我们将单词中对象的大小作为int传递。” 据我所知,JVM中单词的大小是4个字节。 根据这一点,如果我们将大字长数组(例如,MAX_INT – 5)的大小作为int传递,我们必须得到OutOfMemoryException, 请求的数组大小超过VM限制,因为大小对于int来说太大了没有标题的大小。 那么为什么不同类型的数组对元素的最大数量有相同的限制?

查找数组中最长的连续子序列

我的任务是编写一个程序,找到给定数组中增长最长的连续子序列,并打印该子序列的长度和它自己的子序列。 说数组是: int[] arr = {3, 6, 5, 1, 9, 3, 2, 3, 4, 5, 1} 最长的连续增加子序列是2,3,4,5,长度为4.因此这种方法的输出将是 4 2, 3, 4, 5 到目前为止这是我的代码: public class LongestSubsequence { public static void main(String[] args) { // Test arrays int[] arrC = {9, 5, 2, 3, 4, 5}; int[] arrA = {1, 2, 3, 4, 5, 7}; int[] […]

在字符串数组上使用quicksort

我是一名编程学生,而不是发布整个作业,我只是要求帮助解决我已经尝试了几个小时现在才能理解的内容。 我的任务是使用quicksort方法对字符串数组进行排序。 我作为这个问题的一部分负责的其他所有事情都很好但是当我通过打印字符串数组测试排序方法时,它完全混乱,没有任何看似押韵或理由。 请帮我查明代码中的错误,或者我忽略的几个明显的错误。 提供的字符串数组是65个名称的列表: http : //pastebin.com/jRrgeV1E ,方法的代码如下: private static void quickSort(String[] a, int start, int end) { // index for the “left-to-right scan” int i = start; // index for the “right-to-left scan” int j = end; // only examine arrays of 2 or more elements. if (j – i >= 1) { […]

Java char Array – 删除元素

在Java中,我想删除char数组中的某些元素,所以它执行以下操作: char[] Array1 = {‘h’,’m’,’l’,’e’,’l’,’l’}; Array1 = //character index[2] to character index[5] 如何才能做到这一点?