2013-10-17 62 views
1
for(int limit1=1; limit1<=1; limit1++){ 
System.out.print("Number of criteria (Max: 5): "); 
int n = Integer.parseInt(inpt.readLine()); 
System.out.println(); 
if (n>5 || n<1){ 
    System.out.println("Sorry the maximum limit is 5"); 
    System.out.println("Please try again"); 
    System.out.println(); 
    limit1=limit1-1; 
    continue; 
} 
double[] arrayCrit = new double[n]; 
double[] arrayPerc= new double[n]; 
String[] arrayCritName = new String[n]; 
double percentage=0, check=0, cent=0; 
for (int i = 0; i < n; i++){ 
    System.out.print("Criteria("+(i+1)+"): "); 
    arrayCritName[i] = inpt.readLine(); 
for(int limit2=1; limit2<=1; limit2++){ 
    if(n==1){ 
     arrayCrit[i] = 100/100; 
     System.out.print("Percentage: 100%"); 
     break; 
     } 
    System.out.print("Percentage: "); 
    arrayCrit[i] = Integer.parseInt(inpt.readLine()); 
     if(arrayCrit[i]>100 || arrayCrit[i]<1){ 
     System.out.println("Sorry, minimum value is 1 and maximum value is 100"); 
     System.out.println("Please try again"); 
     System.out.println(); 
     limit2=limit2-1;    
     } 
     check=check+arrayCrit[i]; 

    if(check>100 || check<1){ 
     System.out.println("User didn't meet the default percentage (100%)"); 
     System.out.println(check); 
     check=check-arrayCrit[i]; 
     limit2=limit2-1; 
     continue; 
} 
arrayCrit[i] = arrayCrit[i]/100; 

} 

} 

你好,我輸入百分比時需要幫助。我想知道最後一個輸入是否可以自動輸入值。Java自動價值

例如:

  • 標準數3
  • 標準(1) - 出席
  • 百分比:25
  • 標準(2) - 測驗
  • 百分比 - 25
  • 標準(3) - 考試
  • 比例 - 50 < --- Automaticall你會在那裏,不需要輸入。

謝謝!

+2

'對(INT LIMIT1 = 1; LIMIT1 <= 1; LIMIT1 ++)'真的? – RamonBoza

+0

我做錯了嗎? – user2768501

+1

他正在使用'for'來實現重試系統。在我看來,最好使用一個簡單的'while'或'do while',但他的代碼可以工作。 –

回答

1

我打掃和固定您的代碼位:

-I改變您重試for S表示while秒。

-I刪除了一些未使用的變量。

- 我解決了您的自動價值問題。我知道您希望自動值爲100減去用戶輸入的所有先前百分比的總和。由於您正在保存check變量,因此只有當您達到上次執行(n-1)時才需要打印(100-檢查)。

這是代碼:

System.out.print("Number of criteria (Max: 5): "); 
int n = Integer.parseInt(inpt.readLine()); 
System.out.println(); 
while(n>5 || n<1){ 
    System.out.println("Sorry the maximum limit is 5"); 
    System.out.println("Please try again"); 
    System.out.println(); 

    n = Integer.parseInt(inpt.readLine()); 
} 

double[] arrayCrit = new double[n]; 
String[] arrayCritName = new String[n]; 
double check=0; 

for (int i = 0; i < n; i++){ 
    System.out.print("Criteria("+(i+1)+"): "); 
    arrayCritName[i] = inpt.readLine(); 

    if(i == n-1){ 
     arrayCrit[i] = (100-check)/100; 
     System.out.print("Percentage: "+(100-check)+"%"); 
     continue; 
    } 

    System.out.print("Percentage: "); 

    while(true){ 
     arrayCrit[i] = Integer.parseInt(inpt.readLine()); 

     if(arrayCrit[i]>100 || arrayCrit[i]<1){ 
      System.out.println("Sorry, minimum value is 1 and maximum value is 100"); 
      System.out.println("Please try again"); 
      System.out.println(); 
      continue; 
     } 

     check=check+arrayCrit[i]; 

     if(check>100 || check<1){ 
      System.out.println("User didn't meet the default percentage (100%)"); 
      System.out.println(check); 
      check=check-arrayCrit[i]; 
      continue; 
     } 

     arrayCrit[i] = arrayCrit[i]/100; 
     break; 

    } 
} 
+0

嘿,謝謝。但不知何故,我得到一個錯誤,我輸入標準2:百分比:25,然後它會繼續讓我輸入..標準名稱不移動。 – user2768501

+0

你在代碼的最後添加了「break」嗎?我編輯了我的帖子,並在發佈後幾分鐘添加了它。 –

+0

哇!你是一個拯救生命的人。我一直想知道如何做到這一點大約3天。非常感謝! – user2768501

1

更改一塊,你要打印的字符串百分比和閱讀it.It應該是這樣的代碼......

if(i != n-1) 
{ 
    System.out.print("Percentage: "); 
    arrayCrit[i] = Integer.parseInt(inpt.readLine()); 
    if(arrayCrit[i]>100 || arrayCrit[i]<1){ 
    System.out.println("Sorry, minimum value is 1 and maximum value is 100"); 
    System.out.println("Please try again"); 
    System.out.println(); 
    limit2=limit2-1;    
    } 
} 
else 
{ 
    System.out.print("Percentage: 50"); 
} 

,而不是50把什麼都值/變量保存的值。

+0

其他輸入值是否可能,例如 2或4? 謝謝 – user2768501

+0

是的,這是可能的。如果你有這個值存儲在一個變量。假設你的變量名是val。 System.out.print(「Percentage:」+ val);會給你你想要的。 – Buddha

0

簡單的解決方案是說「Percentage [default:50]」而不是「Percentage」,並使用一些處理邏輯來查找用戶是否實際鍵入了不同的數字。

更高級的解決方案是使用一些行編輯庫,例如C中的GNU readline。對於Java,有JLine