2016-05-17 66 views
-1

我知道在這個問題上還有很多其他的話題,而且我讀了很多,其中很多都沒有幫助。我是Java新手,所以我覺得可能我錯過了一些簡單的東西。如果我使用「Clean and Build」沒有任何錯誤,但是當我試圖運行或調試代碼時,我會收到一個「找不到主類」。找不到主要的班級 - Netbeans

如果我將「Public Void Main」和「Public Void IsPrime」更改爲包含「Static」,則會給出「無法從靜態上下文中引用非靜態變量因子」的錯誤。

任何人都可以提供任何指導?

public class LargestPrime { 

/** 
* 
*/ 
public long factor; 
/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args){ 
    double var, sqvar; 
    var = 600851475143L; 
    sqvar = Math.sqrt(var); 
    ArrayList<Long> factors = new ArrayList<>(); 
    long i = 1; 

    while(i <= sqvar){ 
     if (var % i == 0){ 
      if(i % 2 != 0){ 
       factors.add(i); 
      } 
     } 
     i = i + 2; 
    } 

    ArrayList<Long> primes = new ArrayList<>(); 

    int j; 
    for(j = 0; j <= factors.size(); j++){ 
     factor = factors.get(j); 
     LargestPrime obj = new LargestPrime(); 
     obj.isPrime(factor); 
    } 

} 

/** 
* 
* @param testing 
* 
*/ 
public static void isPrime(long testing){ 
    testing = factor; 
    System.out.println(testing); 
} 
} 
+0

變化因素靜態變量:公共靜態長期因素; – Abdelhak

+0

這不是問題@Abdelhak – emotionlessbananas

+0

並使用 ** LargestPrime.isPrime(測試)**而不是** obj.isPrime(測試)** – emotionlessbananas

回答

0

嘗試改變factor變量爲static這樣public static long factor;變量。
而替換此for循環:

for(j = 0; j <= factors.size(); j++){ 

隨着使用<代替<=因爲ArrayList中從0size-1大小:

for(j = 0; j < factors.size(); j++){