3 回答

TA貢獻1846條經(jīng)驗 獲得超7個贊
嘗試用這個:
public static void main(String[] args)
{
Random random = new Random();
int randomInteger = 0;
int oddNumbers = 0;
int evenNumbers = 0;
for(int i = 0; i < 100; i++){
randomInteger = random.nextInt();
System.out.println("Random Integer: " + randomInteger);
if(evenOdd(randomInteger)) evenNumbers++;
else oddNumbers++;
}
System.out.printf("Even numbers: %d - Odd numbers: %d", evenNumbers, oddNumbers);
}
public static boolean evenOdd(int x)
{
if ((x % 2) == 0)
{
System.out.println("Even");
return true;
}
else
{
System.out.println("Odd");
return false;
}
}
您原來的方法不起作用,因為每次調(diào)用該方法時都會將oddNumbers和變量初始化為 0。evenNumbers

TA貢獻1712條經(jīng)驗 獲得超3個贊
Java 不是 JavaScript。而且,它不具備C++“函數(shù)中的靜態(tài)變量”的能力。
方法內(nèi)聲明的變量是局部的。每次代碼到達方法內(nèi)的變量定義時都會發(fā)生變量初始化,并在退出方法后被銷毀。
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html
所以你有這樣的變體:
1) 在主方法中計算數(shù)字并從實用程序方法返回指示器。
1.1) 布爾值
public static boolean isEven(int x){
return (x % 2) == 0;
};
1.2) 枚舉
private enum NumberType {
EVEN,
ODD
}
public static NumberType getNumberType (int x) {
if ((x % 2) == 0) {
return NumberType.EVEN;
} else {
return NumberType.ODD;
}
};
2)使變量靜態(tài):
public class EvenOdd {
private static int evenNumbersCount = 0;
private static int oddNumbersCount = 0;
public static void main(String[] args) {
// your code
}
public static void countNumberType (int x) {
if ((x % 2) == 0) {
++evenNumbersCount;
} else {
++oddNumbersCount;
}
}
}
3)在一些復雜的情況下,您需要將容器傳遞給您的方法:
public class EvenOdd {
private static final String EVEN = "even";
private static final String ODD = "odd";
public static void main(String[] args) {
// initialize container
Map<String, Integer> evenOddCounts = new HashMap<>(2, 1);
evenOddCounts.put(EVEN, 0);
evenOddCounts.put(ODD, 0);
Random random = new Random();
int randomInteger = 0;
for (int i = 0; i < 100; i++) {
randomInteger = random.nextInt();
countNumberType(evenOddCounts, randomInteger);
}
System.out.println(evenOddCounts.toString());
}
public static void countNumberType(Map<String, Integer> counts, int x) {
if ((x % 2) == 0) {
counts.compute(EVEN, (numberType, count) -> ++count);
} else {
counts.compute(ODD, (numberType, count) -> ++count);
}
}
}
添加回答
舉報