我有一個簡單的Java程式,它從IntelliJ IDEA獲取兩個整數程式引數,然后將兩個引數的總和列印到控制臺。當我用IntelliJ運行該程式時,它執行得很好。我為我的程式創建了一個名為FirstProject_jar3的JAR檔案(這是我第二次嘗試讓這個程式在命令提示符下運行),并試圖在命令提示符下用-classpath FirstProject.jar org.firstjavaproject.tutorial.TwoSum執行它,但我得到一個錯誤,說Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException。0 at org.firstjavaproject.tutorial.TwoSum.main(TwoSum.java:5),我知道這意味著我的程式引數沒有被配置。然而,我確實在IDE中配置了兩個整數引數(3和5)。有什么想法,為什么不作業?請看下面的代碼、檔案路徑、命令提示符螢屏和IDE配置螢屏。如果你需要更多的細節來幫助我,請告訴我。
TwoSum.java
package org.firstjavaproject.tutorial; // imports package
public class TwoSum { // start class "TwoSum"
public static void main(String[] args) { /define the method
int a = Integer. parseInt(args[0]); /define variable "a" with the first integer in the program arguments。
int b = Integer. parseInt(args[1]); /define variable "b" with the first integer in the program arguments。
int sum = a b; //加入變數 "a "和 "b"
System.out.println ("a b =" sum); //print out the sum of the integers in a statement。
}
}
IDE的輸出
a b = 8
行程結束,退出代碼為0
在IntelliJ中的檔案路徑
更新了答案。
感謝那些提供答案的人! 現在明白了,我需要在命令提示符中輸入數字,以便我的代碼能夠作業。
uj5u.com熱心網友回復: 如果你在命令提示符下運行,你沒有在Idea中配置引數。試試吧 在命令的最后有兩個值。 uj5u.com熱心網友回復: 為了通過你的IDE運行這段代碼,在IDE中會有一個特定的位置,你可以應用命令列引數來進行測驗。這些測驗引數對于你的代碼的運行顯然是絕對必要的,以避免產生例外。你顯然知道這一點。 然而在現實世界中,在遠離 IDE 的地方,當你的應用程式被編譯時,你作為命令列引數應用的那些值不再是事物整體的一部分......畢竟,它們只是為了測驗。現在,這些值需要作為真正的命令列引數來提供,這里的其他人已經很好地指出了。
與你的情況無關,但你是否注意到路徑是如何用引號括起來的("...")。這只是為了防止路徑中含有一個或多個空格。任何包含一個或多個空格的單一命令列引數都應被封裝在引號內,否則該引數將被解釋為一個或多個引數,因為命令列引數實際上是由......空格分隔的。
獲取命令列引數是一件事,但確保這些引數實際有效是另一件事。一般來說,推送一個例外是很好的,并且有足夠的解釋力,但有時可能有必要接管并輸出更多的內容,或者完全阻止例外的發生。驗證所提供的引數給了你這種控制。舉個簡單的例子: 一旦編譯成 而在控制臺視窗的輸出應該是這樣的。
結果是。162.47
方程式。
3 5 122 12.67 8.8 11 = 162.47 如果沒有提供引數: 輸出將是: 而且,如果只提供一個引數: 輸出將是: 如果在引數串列中提供了一個或多個無效的引數: 輸出將是:
標籤: 上一篇:試圖在wpf桌面應用程式中使用application/x-www-form-urlencoded進行APIPOST操作。
java -classpath FirstProject.jar org.firstjavaproject.tutorial.TwoSum 3 5
java -jar "C:Path_To_My_JAR_FileFirstProject.jar" 3 5
public static void main(String[] args) { /define the method
/* 這里,sum被宣告為double型別,因為這段代碼可以接受整數的ay數。
接受整數和浮點值的數量。
來求和。 */
double sum = 0.0d。
/* 這個StringBuilder物件被用來建立將在控制臺視窗中顯示的方程式。
將被顯示在控制臺視窗中。它將包含
只有 "提供的有效引數,并且只有在有多個
一個引數。 */
StringBuilder equation = new StringBuilder(")。
//提供了哪些命令列引數...。
switch (args.length) {
// If no arguments were suppied!
case 0:
System.out.println("結果是0,因為沒有提供引數來求和。")。
break。
case 1:
//如果只提供了一個引數!。
if (args[0].matches("-?d (′.d )?") {
sum = Double.parseDouble(args[0] )。)
}
System.out.println("結果是" sum
" 因為只提供了一個引數來求和。")。)
break。
default:
//如果提供了兩個以上的引數。
/* 下面的代碼允許提供兩個或多個命令列引數
值,并進行相應的處理。 */
for (String value : args) {
/* 驗證所提供的引數確實是一個整數或浮點值,無論是有符號還是無符號。
或浮點值,無論是有符號還是無符號。 */
if (value.matches("-?d (.d )?"/span>)) {
// It's valid so parse it as Double type...
sum = Double.parseDouble(value)。
//在這個方程的基礎上進行顯示...
// --------------------------------------
if (!equation.toString().isEmpty() } {
equation.append(" ")。
}
equation.append(value)。
// --------------------------------------
}
else {
// Argument is found to be invalid so skip it. 通知用戶。
System.out.println("跳過提供的引數(" value
"),因為它不是一個有效的數值!")。)
}
}
System.out.println("結果是:" sum)。
}
/* Print out the equation that generated the sum of the values supplied.
所提供的值的總和,但只有在提供了一個以上的引數時
提供了一個以上的引數。 */
if (args.length > 1) {
System.out.println ("Equation:")。
System.out.println (equation
(equation.toString().isEmpty() ? "" : " = ")
sum)。
}
}
.jar檔案,你可以這樣啟動它:java -jar "C:Path_To_My_JAR_FileFirstProject. jar"/span> 3 5 122 12. 67 8.8 11
java -jar "C:Path_To_My_JAR_FileFirstProject.jar"
結果是0因為沒有提供引數來求和。
java -jar "C:Path_To_My_JAR_FileFirstProject.jar" 8.13
結果是8.13因為只提供了一個引數來求和。
java -jar "C:Path_To_My_JAR_FileFirstProject. jar" 3 5r 122 12.67 8.u8 11
跳過提供的引數 (5r)因為它不是一個有效的數值!
跳過提供的argument (8.u8),因為它不是一個有效的數值!
結果是。148.67。
方程式。
3 122 12.67 11 =148.67



