我有一个指定的数组。我需要通过while循环传递它们,并且每当增加或减少顺序发生变化时,我向Totalrun添加1。例如2,3,7都在增加,但如果数组中的下一个数字小于7,则它会在运行中加1,以开始新的运行。运行是连续数字的列表,这些数字要么全部增加(ups),要么全部减少(减少)。
public class run {
public static void main(String[] args) {
boolean prevgrad;
int[] number = {2, 3, 7, 4, 5, 1, 12, 14, 9, 28};
int Totalrun = 1;
for (int i = 0; i < number.length - 2; i++) {
int prevnum = number[i];
int currnum = number[i + 1];
if (currnum > prevnum) {
prevgrad = true;
if (currnum > prevnum) {
if (prevgrad = true) {
} else {
Totalrun = Totalrun + 1;
prevgrad = false;
if (currnum < prevnum) {
if (prevgrad = false) {
} else {
Totalrun = Totalrun + 1;
}
prevgrad = false;
break;
System.out.println(Totalrun);
}
}
}
}
}
}
}
错误:
run.java:30: error: unreachable statement
System.out.println(Totalrun);
^
1 error
答案 0 :(得分:1)
我想我明白了,这里不是你复制,而是要学习。从现在开始,我强烈建议你去看一些视频,甚至读一本关于Java的好书。在stackoverflow上发布你遇到的每一个问题都不如编程好书那么有用。
public class Test {
public static void main(String args[]) {
int[] number = {2,3,7,4,5,1,12,14,9,28}; // 1, 4, -3, 1, -4, 11, 2, -5, 1 <- These are differences from curr - prev
int totalRun, incRun = 0, decRun = 0; // Not 1, what if theyre all increasing/decreasing? Run never goes to 1.
for (int i = 0; i < number.length - 1; i++) {
int prevnum = number[i];
int currnum = number[i+1];
int difference = currnum - prevnum;
if (difference > 0)
incRun++;
else
decRun++;
}
if (number[1] > number[0])
totalRun = incRun;
else
totalRun = decRun;
System.out.println("Total run: " + totalRun);
}
}
答案 1 :(得分:0)
您无法以这种方式访问数组的值(至少不是我所知道的)。您可以使用多种方法,我个人会在此示例中使用数组for
循环。
prevNum = 0;
for (int currNum: Number) {
if (prevNum > currNum) {
prevgrad = "up";
... rest of the code;
}
}
原因在于这种类型的for循环,currNum
的值等于该迭代中数组的值。
完整的代码是:
int prevNum = 0;
int totalRun = 0;
for (int currNum: Number) {
if (prevNum > currNum) {
prevgrad = "up";
}
else {
totalRun++;
prevgrad = "down";
}
prevNum = currNum;
}