黑马程序员技术交流社区
标题:
如何封装多个boolean类型的方法
[打印本页]
作者:
黎健东
时间:
2012-8-2 01:56
标题:
如何封装多个boolean类型的方法
本帖最后由 凉宫蛋蛋 于 2012-8-2 03:43 编辑
public class CopyOfCopyOfTest010_NumberTest {
public static void main(String[] args) {
boolean alive = false;
boolean alive2 = false;
int [] array = new int [10];
for(int i = 0; i < array.length; i++){
array[i] = i;
}
for(int i : array){
//*****************************
//想将下面方法封装成Method1
if(i % 2 == 1){
System.out.println("1");
if(alive == true){
System.out.println("true");
}
if(alive2 == true){
System.out.println("true2");
}
alive = false;
alive2 = false;
}
//*****************************
//*****************************
//想将下面方法封装成Method2
if(i % 2 == 0){
System.out.println("0");
if(alive == false){
System.out.println("false");
}
if(alive2 == false){
System.out.println("false2");
}
alive = true;
alive2 = true;
}
//*****************************
}
}
}
复制代码
想把上面的代码区域分别封装成Method1,Method2
如果把alive2去掉就可以封装了,但是多了alive2之后,就封装不了了
怎么样可以实现封装多个boolean类型的方法呢?
下面这个是之封装alive的方法:
public class Test4 {
public static void main(String[] args) {
boolean alive = false;
int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
array[i] = i;
}
for (int i : array) {
alive = method1(alive, i);
alive = method2(alive, i);
}
}
public static boolean method2(boolean alive, int i) {
if (i % 2 == 0) {
System.out.println("0");
if (alive == false) {
System.out.println("false");
}
alive = true;
}
return alive;
}
public static boolean method1(boolean alive, int i) {
if (i % 2 == 1) {
System.out.println("1");
if (alive == true) {
System.out.println("true");
}
alive = false;
}
return alive;
}
}
复制代码
作者:
周坤
时间:
2012-8-2 03:19
public class CopyOfCopyOfTest010_NumberTest {
static boolean alive = false;
static boolean alive2 = false;
static void method1(int i)
{
if(i % 2 == 0)
{
return;
}else{
System.out.println("1");
if(alive == true){
System.out.println("true");
}
if(alive2 == true){
System.out.println("true2");
}
alive = false;
alive2 = false;
}
}
static void method2(int i)
{
if(i % 2 == 1)
{
return;
}else{
System.out.println("0");
if(alive == false){
System.out.println("false");
}
if(alive2 == false){
System.out.println("false2");
}
alive = true;
alive2 = true;
}
}
public static void main(String[] args) {
int [] array = new int [10];
for(int i = 0; i < array.length; i++){
array[i] = i;
}
for(int i : array){
method1(i);
method2(i);
//*****************************
//想将下面方法封装成Method1
// if(i % 2 == 1){
//
// System.out.println("1");
//
// if(alive == true){
//
// System.out.println("true");
//
// }
//
// if(alive2 == true){
//
// System.out.println("true2");
//
// }
//
// alive = false;
//
// alive2 = false;
//
// }
//*****************************
//*****************************
//想将下面方法封装成Method2
// if(i % 2 == 0){
//
// System.out.println("0");
//
// if(alive == false){
//
// System.out.println("false");
//
// }
//
// if(alive2 == false){
//
// System.out.println("false2");
//
// }
//
// alive = true;
//
// alive2 = true;
//
// }
//*****************************
}
}
}
复制代码
放到了方法里,输出结果也一样,
不过不知道想要的结果是怎么样子的封装,最好把封装好单个alive1的代码帖出来看看。
作者:
黎健东
时间:
2012-8-2 03:54
周坤 发表于 2012-8-2 03:19
放到了方法里,输出结果也一样,
不过不知道想要的结果是怎么样子的封装,最好把封装好单个alive1的代码帖 ...
alive1的方法,我直接用IDE就可以自动封装了,结果如上
多了alive2就不行了,因为无法返回两个boolean
貌似楼上的方法可以,但不知道当多个boolean的时候,是否也是这样抽取出来,有没有什么规律呢
作者:
胡文凡
时间:
2012-8-2 09:17
楼主这个疑问其实可以简化为需要一个方法返回两个值。值1和值2。
其实可以很简单的让其返回一个数组,比如将1定为true,0为false。alive1和alive2为一个数组的两个元素
public class Text2 {
public static void main(String[] args) {
int[] alive = new int[]{0,0}; //用数组表示,1表示ture,0表示false
int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
array
= i;
}
for (int i : array) {
//int alive1 = method1(alive, i);
int alive2 = method2(alive, i)[1]; //只改一个方法,另一个方法类似的改。
}
}
public static int[] method2(int[] alive, int i) {
if(i % 2 == 1){
System.out.println("1");
if(alive[0] == 1){ //相当于源程序的alive1 ==ture,其实此处原来也不应该用alive1==ture,直接if(alive1)不是同一个意思?
System.out.println("true");
}
if(alive[1] ==0){ //相当于原来的alive2== false;
System.out.println("true2");
}
alive[0] = 0; //相当于 原程序中的alive1=false;
alive[1] = 0; //相当于原程序的 alive2 = false;
}
return alive;
//这样就能达到返回两个布尔值的效果了
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2