Java数组-始终为true
我试图开发一种方法来检查给定数组的前4个元素(假设数组至少有4个元素)是否连续相等,我的第一种方法是创建一个布尔变量,并首先将其设置为Java数组-始终为true,java,Java,我试图开发一种方法来检查给定数组的前4个元素(假设数组至少有4个元素)是否连续相等,我的第一种方法是创建一个布尔变量,并首先将其设置为false,如果a[I]==a[I+1]将其设置为true。但问题是,无论这4个元素是连续的还是不连续的,它总是将其打印为真 public static boolean isConsecutive(int[] a) { boolean isConsecutive = false; for (int i = 0; i < 4; i++) {
false
,如果a[I]==a[I+1]将其设置为true
。但问题是,无论这4个元素是连续的还是不连续的,它总是将其打印为真
public static boolean isConsecutive(int[] a) {
boolean isConsecutive = false;
for (int i = 0; i < 4; i++) {
if (a[i] == a[i + 1]) {
isConsecutive = true;
}
}
return isConsecutive;
}
公共静态布尔值是连续的(int[]a){
布尔值isConsecutive=false;
对于(int i=0;i<4;i++){
如果(a[i]==a[i+1]){
isconsecuritive=true;
}
}
回报是持续的;
}
我的错在哪里?提前谢谢 如果不是连续的,则需要一个else分支将其再次设置为false,并循环到3。或者更可取的是,当某个事物不相等时立即返回语句
if (a[i] == a[i + 1]) {
isConsecutive = true;
} else {
return false;
}
您还可以忽略变量isConsecutive
类似的内容
public static boolean isConsecutive(int[] a) {
for (int i = 0; i < 3; i++) {
if (!(a[i] == a[i + 1])) {
return false;
}
}
return true;
}
公共静态布尔值是连续的(int[]a){
对于(int i=0;i<3;i++){
如果(!(a[i]==a[i+1])){
返回false;
}
}
返回true;
}
请注意,对于索引未绑定异常,您的循环是不安全的,因为它的大小可能小于4 如果不是连续的,则需要一个else分支将其再次设置为false,并循环到3。或者更可取的是,当某个事物不相等时立即返回语句
if (a[i] == a[i + 1]) {
isConsecutive = true;
} else {
return false;
}
您还可以忽略变量isConsecutive
类似的内容
public static boolean isConsecutive(int[] a) {
for (int i = 0; i < 3; i++) {
if (!(a[i] == a[i + 1])) {
return false;
}
}
return true;
}
公共静态布尔值是连续的(int[]a){
对于(int i=0;i<3;i++){
如果(!(a[i]==a[i+1])){
返回false;
}
}
返回true;
}
请注意,对于索引未绑定异常,您的循环是不安全的,因为它的大小可能小于4 使用您的方法我们的矿山方法,您可能会得到arrayOutOfBounds异常。 顺便说一下,我认为下面的方法更简单
public static boolean isConsecutive(int[] a) {
return (a[0] == a[1] &&
a[0] == a[2] &&
a[0] == a[3])
}
使用您的方法,我们的方法,您可能会得到arrayOutOfBounds例外。 顺便说一下,我认为下面的方法更简单
public static boolean isConsecutive(int[] a) {
return (a[0] == a[1] &&
a[0] == a[2] &&
a[0] == a[3])
}
在for循环外,isConsecutive变量设置为false
public static boolean isConsecutive(int[] a) {
**boolean isConsecutive=false**;
for(int i=0;i<4;i++) {
if(a[i]==a[i+1]) {
isConsecutive=true;
}
}
return isConsecutive;
}
公共静态布尔值是连续的(int[]a){
**布尔值isConsecutive=false**;
for(int i=0;i您的isconsecuritive变量在for循环外设置为false
public static boolean isConsecutive(int[] a) {
**boolean isConsecutive=false**;
for(int i=0;i<4;i++) {
if(a[i]==a[i+1]) {
isConsecutive=true;
}
}
return isConsecutive;
}
公共静态布尔值是连续的(int[]a){
**布尔值isConsecutive=false**;
对于(int i=0;i问题在于if条件。它不是检查4个连续的相似元素,而是检查两个连续的相似元素
if(a[i]==a[i+1]) {
isConsecutive=true;
}
如果您的数组为[1,2,2,3,4,5,6],则在该数组中,当您的函数将检查[1]==a[2]时,它将设置为isConsecutive为true,并且在数组的完整迭代中保持为true
正如您提到的,数组至少有4个元素,所以您可以像这样编写函数
public static boolean isConsecutive(int[] a) {
if(a[0]==a[1] && a[0]==a[2] && a[0]==a[3])
return true;
else
return false;
}
如果要检查数组中任意位置的4个连续元素,请编写函数
public static boolean isConsecutive(int[] a) {
boolean isConsecutive=false;
for(int i=0;i<a.length-3;i++) {
if(a[i]==a[i+1] && a[i]==a[i+2] && a[i]==a[i+3])) {
isConsecutive=true;
}
}
return isConsecutive;
}
公共静态布尔值是连续的(int[]a){
布尔值isConsecutive=false;
对于(int i=0;i问题在于if条件。它不是检查4个连续的相似元素,而是检查两个连续的相似元素
if(a[i]==a[i+1]) {
isConsecutive=true;
}
如果您的数组为[1,2,2,3,4,5,6],则在该数组中,当您的函数将检查[1]==a[2]时,它将设置为isConsecutive为true,并且在数组的完整迭代中保持为true
正如您提到的,数组至少有4个元素,所以您可以像这样编写函数
public static boolean isConsecutive(int[] a) {
if(a[0]==a[1] && a[0]==a[2] && a[0]==a[3])
return true;
else
return false;
}
如果要检查数组中任意位置的4个连续元素,请编写函数
public static boolean isConsecutive(int[] a) {
boolean isConsecutive=false;
for(int i=0;i<a.length-3;i++) {
if(a[i]==a[i+1] && a[i]==a[i+2] && a[i]==a[i+3])) {
isConsecutive=true;
}
}
return isConsecutive;
}
公共静态布尔值是连续的(int[]a){
布尔值isConsecutive=false;
对于(int i=0;i您的代码将isConsecutive
设置为false
,目的是在找到证据时将其设置为true
。问题是a[i]==a[i+1]
只是部分证据。因此,当a[0]==a[1]
时,您将其设置为true
,并且如果(比如)a[1]!=a[2]
,则永远不要将其更改回来
在这种情况下,如果从isconsecuritive=true
开始,并在循环中寻找确凿的证据证明它是错误的,效果会更好:
boolean firstFourEqual(int[] a) {
boolean isConsecutive=true;
for(int i=0;i<3;i++) {
if(a[i]!=a[i+1]) {
isConsecutive=false;
}
}
return isConsecutive;
}
或:
所有这些都假设数组的大小至少为4。如果不能保证这一点,则需要更多的代码。您的代码将isConsecutive
设置为false
,目的是在找到证据时将其设置为true
。问题是a[i]==a[i+1]
只是部分证据。因此,当a[0]==a[1]
时,将其设置为true
,如果(比如)a[1]!=a[2]
,则永远不要将其更改回原来的值
在这种情况下,如果从isconsecuritive=true
开始,并在循环中寻找确凿的证据证明它是错误的,效果会更好:
boolean firstFourEqual(int[] a) {
boolean isConsecutive=true;
for(int i=0;i<3;i++) {
if(a[i]!=a[i+1]) {
isConsecutive=false;
}
}
return isConsecutive;
}
或:
所有这些都假设数组的大小至少为4。如果不能保证这一点,则需要更多的代码。一旦在某个i
值(例如1)中将isConsecutive
变量值设置为true
,即使在下一次迭代中,该值也将始终为true
(当i==2
)时,下一个元素(a[3]
)的值不同于当前元素(a[2]
)
此外,由于for循环中的限制为4,因此它还执行第4个和第5个元素的检查。当数组中只有4个元素时,它还将抛出ArrayIndexOutOfBoundsException
您需要执行以下操作:
一旦出现错误,将isConsecutive
值更改回false
当前元素和下一个元素之间的差异
将限制设置为3,以便最后一次迭代不会检查第5次迭代
元素
添加布尔标志ch