2017-09-03 22 views
0

我試圖用Java編寫了(蠻力)解決兩個問題和一個IllegalArgumentException時:Java「的錯誤:類型的非法啓動」扔

import java.lang.*; 

public class TwoSum { 
    public int[] twoSum(int[] nums, int target) { 
     for (int i = 0; i < nums.length; i++) { 
      for (int j = i+1; j < nums.length; j++) { 
       if (nums[j] == target - nums[i]) { 
        return new int[] {i, j}; 
       } 
      } 
     } 
    } 
    throw new IllegalArgumentException("No two sum solution"); 
} 

然而,當我嘗試編譯它我得到以下錯誤:

/home/kurt/Documents/Algorithms/TwoSum.java:13: error: illegal start of type 
    throw new IllegalArgumentException("No two sum solution"); 
    ^
/home/kurt/Documents/Algorithms/TwoSum.java:13: error: ';' expected 
    throw new IllegalArgumentException("No two sum solution"); 
     ^
/home/kurt/Documents/Algorithms/TwoSum.java:13: error: invalid method declaration; return type required 
    throw new IllegalArgumentException("No two sum solution"); 
      ^
/home/kurt/Documents/Algorithms/TwoSum.java:13: error: illegal start of type 
    throw new IllegalArgumentException("No two sum solution"); 
            ^
4 errors 
[Finished in 0.8s with exit code 1] 

我有點難倒可能會導致錯誤? (我從示例代碼片段中獲取代碼,但沒有注意到任何差異)。

+3

這只是一個錯字:你已經把'throw' *放在方法的外面了。將它移到更高的一行,*內部*方法的'{...}'。投票結束爲錯字/非重複。 –

+1

'拋出新的IllegalArgumentException(「沒有兩個總和的解決方案」);'在類級別聲明。不允許。作爲最後一條語句,它應該在'twoSum()'中。 – davidxxx

回答

1

使用以下代碼:

import java.lang.*; 

public class TwoSum { 
    public int[] twoSum(int[] nums, int target) { 
     for (int i = 0; i < nums.length; i++) { 
      for (int j = i+1; j < nums.length; j++) { 
       if (nums[j] == target - nums[i]) { 
        return new int[] {i, j}; 
       } 
      } 
     } 
     throw new IllegalArgumentException("No two sum solution"); 
    } 
} 

在這種情況下是throw new IllegalArgumentException("No two sum solution");內部方法。

相關問題