2015-10-15 80 views
-4

該程序爲類創建各種方法並運行每種方法。當我運行這些方法時,雖然輸入的整數值肯定會傳遞給對象(我使用print語句進行測試),但返回語句在方法中不起作用。我相信這個問題在我的靜態聲明中。 任何人都可以幫忙嗎?Java程序:返回語句不工作

import java.util.Scanner; 
public class MyInteger { 
    public static int storedValue; 
    public int value; 
    public static void main(String[] args){ 
     Scanner input = new Scanner(System.in); 
     System.out.println("Class with various methods test. Please enter an integer:"); 
     int num = input.nextInt(); 
     MyInteger x = new MyInteger(num); 
     storedValue = x.value; 
     System.out.println("Now performing returnInt"); 
     x.returnInt(); 
     System.out.println("Now performing isEven"); 
     x.isEven(); 
    } 
    MyInteger(int a){ 
     value = a; 
    } 
    public int returnInt(){ 
     return storedValue; 
    } 
    public boolean isEven(){ 
     if(value % 2 == 0){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    public boolean isOdd(){ 
     if(value % 2 != 0){ 
      return true; 
     } 
     else{ 
      return false;  
     } 
    } 
    public boolean isPrime(){ 
     if (value == 2){ 
      return true; 
     } 
     for (int i = 2; i < value;i++){ 
      if (value % i == 0){ 
       return false; 
      } 
      } 
      return true; 
    } 
    public boolean isEven(int a){ 
     if (a % 2 == 0){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    public boolean isOdd(int a){ 
     if (a % 2 != 0){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    public boolean isPrime(int a){ 
     if (a == 2){ 
      return true; 
     } 
     for (int i = 2; i < a;i++){ 
      if (a % i == 0){ 
       return false; 
      } 
      } 
      return true; 
    } 
    public boolean isEven(MyInteger a){ 
     if (a.value % 2 == 0){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    public boolean isOdd(MyInteger a){ 
     if (a.value % 2 != 0){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    public boolean isPrime(MyInteger a){ 
     if (a.value == 2){ 
      return true; 
     } 
     for (int i = 2; i < a.value;i++){ 
      if (a.value % i == 0){ 
       return false; 
      } 
      } 
      return true; 
    } 
    public boolean equals(int a){ 
     if (value == a){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    public boolean equals(MyInteger a){ 
     if (value == a.value){ 
      return true; 
     } 
     else{ 
      return false; 
     } 
    } 
    public int parseInt(String s, int radix){ 
     for (int i = (s.length()-1); i >= 0; i--){ 
     radix += (int)s.charAt(i)*(Math.pow(10, i)); 
    } 
     return radix; 
    } 
} 
+2

_do not work_是什麼意思? –

+0

簡化:'公共布爾isEven(){返回值%2 == 0; }'。對於ifOdd,只需返回'!isEven();'和....'public boolean equals(int a){return value == a; }'等... –

回答

1

首先,取出靜態的storedvalue

// public static int storedValue; 

然後改變您的returnInt返回值。像,

public int returnInt(){ 
    return value; 
} 

最後,在呼叫方指定return(ED)值(main,或直接使用它)。類似於

System.out.println("Now performing returnInt"); 
int v = x.returnInt(); 
System.out.printf("Value = %d%n", v); 
System.out.println("Now performing isEven"); 
if (x.isEven()) { 
    System.out.println("It's even"); 
} else { 
    System.out.println("It's odd"); 
} 
+0

謝謝你的幫助!對不起,我是新手。 –