我编写了这个方法,检查下一个数组的索引数中是否包含一个数字,如果至少有一个数字是下一个数组的一部分,它将进入计数器,如果计数器的值大于0,它将进入一个变量“check”,该变量将等于true。
有一个索引为false就足以使整个数组为false。
例如,根据我构建的方法正确的数组:int[]arr={12,527,71,114,49,190};
这就是方法的解释。现在来解决我的问题。这个方法只适用于偶数,我不知道什么能起作用。感谢所有的帮手!
public static boolean checkSpecialArray(int[] arr)
{
int i = 0;
int j = 0;
int x = 0;
boolean check = true;
int counter = 0;
for (i = 0; i < arr.length; i++)// array's length
{String Dig = Integer.toString(arr[i++]);//next array's number
String num = Integer.toString(arr[i]);//first array's number
for (j = 0; j < num.length(); j++)// check first array's index number
for (x = 0; x < Dig.length(); x++)// check 2nd array's index number
if (Integer.parseInt("" + num.charAt(j)) == Integer.parseInt("" + Dig.charAt(x)))//checks a digit to another digit
counter++;
if(counter>0)
check = true;
else if(counter==0)
return false;
counter=0;
}
if(check)
return true;
return false;
}
我不得不猜测这里,但我想这是你问题的根源:
for (i = 0; i < arr.length; i++) { // array's length
String Dig = Integer.toString(arr[i++]);//next array's number
在这里,您也在循环中增加i
,这样它就跳过了数字。您可能希望执行integer.tostring(arr[i+1])
。
请注意,i++
基本上与i+=1
或i=i+1
相同,因此在循环的“Next”操作(for-constructure的第三部分)以及循环主体中使用该操作基本上会使循环主体从索引0、2、4等开始,这似乎只使用偶数索引。
另外,在第二行使用字符串num=integer.tostring(arr[i]);
基本上使用“下一个”数字,而不是第一个。
最后,i
i++
,但即使是
i+1
也会造成这种情况)。
你为什么需要这个(根据你评论中的问题)?
现在让我们考虑循环条件的选项:
i
-这将允许
i
引用数组中的最后一个索引,因此
arr[i+1]
将越界,因此出现异常
i<=arr.length
-这将允许i
获得更多超出界限的内容,并且arr[i]
将已经失败 i
-这将限制
i
只能引用倒数第二个索引(例如,长度为5的数组中的索引3),因此
arr[i+1]
仍然在边界内,并引用最后一个元素。
所以您希望循环如下所示:
//from first to second-to-last index
for (i = 0; i < arr.length - 1; i++) {
String num = Integer.toString(arr[i]);//first array's number
//also note the lowercase variable name which is more according to the Java code conventions
String dig = Integer.toString(arr[i+1]);//next array's number
或者,您可以使用增强的for循环,例如:
String prev = null;
for( Integer num : arr ) {
//or use Math.abs(num) to also be able to handle negative integers easily
String next = Integer.toString(num);
//only if there was a previous number
if( prev != null ) {
//compare digits/characters here
}
//keep reference to the "current" number in string form to act as previous in the next iteration
prev = next;
}
我犯的错误 我的密码 我试图将数组的最后5个元素存储在temp 2中。那我就换了。有更简单的方法吗?将数组的前五个元素与后五个元素切换?你会如何用for循环切换它们?
应用程序不能通过谷歌搜索进行索引;考虑使用ActoVIEW意图过滤器添加至少一个活动。有关更多详细信息,请参阅问题说明。较少的(Ctrl-F1)检查信息:添加URL以将你的应用程序放入谷歌索引,从谷歌搜索获取应用程序的安装和流量。 但是我已经考虑了一个带有动作视图意图过滤器的活动。请帮忙。
固定的: 我删除了while循环并添加了 我正在尝试向一个单词中随机添加一个额外的字母副本(介于0-8之间)。实例does可能会变成dooee或doess。 我的函数有时会工作,但总是会因越界索引错误而崩溃。 我假设我需要在某个时刻检查ArrayList中的空值。我试着用和if来包装我的while语句,以检查它,但没有任何改进。有什么建议吗?
问题内容: 这样做时 我收到一个模棱两可的类型错误。可以理解的是,编译器无法确定我是指还是from 。 当不使用方法引用时,我可能会通过显式转换来摆脱这种情况,或者长时间写出泛型,但是如何让编译器知道我的意思呢?我可以使用什么语法(如果有)来明确表达? 问题答案: 没有方法可以使方法引用明确。简而言之,方法引用是仅明确的方法引用才支持的功能。因此,你有两种解决方案: 使用lambda表达式: (至
所以基本上我应该做的是,我应该得到一个字符串的数组列表,用两个字符串填充它,然后比较它们。例如,如果一个字符串是“1,2,3,4”,第二个字符串是“7,6,2,8,1”,那么它应该打印出“1,2”,因为它打印出的数字相似。但我遇到了和arrayindexoutofbounds异常,我不知道如何修复它。此外,如果你有任何可能缩短此代码的提示,也请告诉我。我有一个习惯,让我的代码超长。