[英]Can’t figure out how to Return a value
這可能會被否決,所以如果你不投票給我,你能提供一個鏈接到我可以找到的地方嗎?
我在這里做錯了什么? 我很新,似乎這應該有效。 我只是不知道我做錯了什么。 這是我的錯誤
public class Test
{
public static long calculate(long n)
{
n = args[0];
return n;
}
public static void main(String[] args)
{
long answer;
answer = calculate();
}
}
例外:
Test.java:6: error: cannot find symbol
n = args[0];
^
symbol: variable args
location: class Test
Test.java:13: error: method calculate in class Test cannot be applied to given types;
answer = calculate() ;
^
required: long
found: no arguments
reason: actual and formal argument lists differ in length
2 errors
args
是main
方法的本地String
數組。
所以首先它是main
方法的一個局部變量,它在解釋第一個錯誤的calculate
方法中不可見: error: cannot find symbol
。
其次calculate
需要一個long
參數,而您正試圖提供一個String
。 為此,您收到error: method calculate in class Test cannot be applied to given types;
因此,將args[0]
轉換為long
作為參數后,將其傳遞給calculate
。
public class Test
{
public static long calculate(long n)
{
return n;
}
public static void main(String[] args)
{
long answer = 0L;
try{
answer = calculate(Long.parseLong(args[0]));
}catch (ArrayIndexOutOfBoundsException ae){
ae.printStackTrace();
}catch (NumberFormatException nfe){
nfe.printStackTrace();
}
System.out.println(answer);
}
}
在整個類中,沒有使用命名args定義的實例變量,您嘗試使用的變量是 main 方法中的參數,只能在 main方法中訪問。
通過考慮您的代碼,您在計算內部什么都不做,因此您可以按如下方式編寫 main 方法:
public static void main(String[] args)
{
long answer;
answer = Long.parseLong(args[0]);
}
兩個代碼都會做同樣的工作。
下面的代碼可以解決您的問題
public class Test
{
public static long calculate(String[] args)
{
long n = Long.parseLong(args[0]);
return n;
}
public static void main(String[] args)
{
long answer;
answer = calculate(args);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.