方法一:循环嵌套法
```java
public class ChickenMoney {
public static void main(String[] args) {
for (int i = 0; i <= 20; i++) {
for (int j = 0; j <= 100 / 3; j++) {
for (int k = 0; k <= 100; k++) {
if (i * 5 + j * 3 + k / 3 == 100 && k % 3 == 0 && i + j + k == 100) {
System.out.printf("公鸡:%2d母鸡:%2d小鸡:%2d\n", i, j, k);
}
}
}
}
}
}
```
方法二:变量替换法
```java
public class ChickenMoney {
public static void main(String[] args) {
int a = 0;
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
for (int k = 0; k < 100; k++) {
if (5 * i + 3 * j + k / 3 == 100 && k % 3 == 0 && i + j + k == 100) {
System.out.println(i + " " + j + " " + k);
a++;
}
}
}
}
System.out.println("一共有以上" + a + "种方案");
}
}
```
方法三:优化变量范围
```java
public class ChickenMoney {
public static void main(String[] args) {
int gj = 0, mj = 0, xj = 0, count = 0;
for (gj = 0; gj < 34; gj++) {
for (mj = 0; mj < 21; mj++) {
if (gj * 3 + mj * 5 + (100 - gj - mj) / 3 == 100) {
count++;
System.out.println(gj + " " + mj + " " + (100 - gj - mj));
}
}
}
System.out.println("有" + count + "种可能");
}
}
```
方法四:简化条件判断
```java
public class ChickenMoney {
public static void main(String[] args) {
for (int i = 0; i <= 20; i++) {
for (int j = 0; j <= 100 / 3; j++) {
int k = 100 - i - j;
if (i * 5 + j * 3 + k / 3 == 100 && k % 3 == 0) {
System.out.printf("公鸡:%2d母鸡:%2d小鸡:%2d\n", i, j, k);
}
}
}
}
}
```
这些方法都可以用来解决百鸡问题,你可以根据自己的需求和编程习惯选择合适的方法。