2013-10-16 45 views
2

我試圖存儲在for循環結構上輸入的值,以後我將需要使用它,但只能在for循環結構中識別它。我需要存儲的值要認識到程序的其餘部分,但不知何故,我得到一個錯誤「無法找到符號」Java數組存儲值

public class TryArray { 
    public static void main(String args[]) throws IOException { 
    BufferedReader inpt = new BufferedReader(new InputStreamReader(System. in)); 

    int[] arrayCrit = new int[5]; 
    String[] crits = new String[5]; 

    for (int i = 0; i < crits.length; i++) { 
     System.out.print("Criteria: "); 
     crits[i] = inpt.readLine(); 
     for (int j = 0; j < arrayCrit.length; j++) { 
     System.out.print("Percentage: "); 
     arrayCrit[j] = Integer.parseInt(inpt.readLine()); 
     } 
    } 

    System.out.println(crits[i] + arrayCrit[j]) 
    } 
} 

編輯:是的,我可以打印輸出移動for循環中,但在顯示所有值之前,我需要先輸入所有值。請我需要幫助。

+0

我讚賞所有幫助傢伙,謝謝。 – user2768501

+0

不客氣。 –

回答

2

希望這會有所幫助。

public static void main(String args[]) throws IOException { 
    BufferedReader inpt = new BufferedReader(new InputStreamReader(
      System.in)); 

    int[] arrayCrit = new int[5]; 
    String[] crits = new String[5]; 

    for (int i = 0; i < crits.length; i++) { 
     System.out.print("Enter Criteria: "); 
     crits[i] = inpt.readLine(); 
     System.out.print("Enter Percentage: "); 
     arrayCrit[i] = Integer.parseInt(inpt.readLine()); 
    } 
    // Printing the values 
    for (int i = 0; i < crits.length; i++) { 
     System.out.println("Criteria :" + crits[i] + " Percentage: " 
       + arrayCrit[i]); 
    } 
} 
+0

這是我需要的,謝謝。 – user2768501

+0

@ user2768501很高興聽到它.. – Prabhakaran

1

顯示所有你必須做出另一個loop閱讀,插入

import java.io.*; 

public class TryArray{ 
    public static void main(String args[])throws IOException{ 
    BufferedReader inpt = new BufferedReader (new InputStreamReader(System.in)); 

    int [] arrayCrit = new int [5]; 
    String [] crits = new String [5]; 

    for(int i=0; i<crits.length; i++){ 
     System.out.print("Criteria: "); 
     crits[i]=inpt.readLine(); 
    for (int j=0; j<arrayCrit.length; j++){ 
     System.out.print("Percentage: "); 
     arrayCrit[j]=Integer.parseInt(inpt.readLine()); 
    } 
    } 
    for(int i=0; i<crits.length; i++){ 
     for (int j=0; j<arrayCrit.length; j++){ 

      System.out.println(crits[i] + arrayCrit[j]) 
      } 
     } 
    } 
} 

或我誤解你的問題後?

+0

爲什麼你使用兩個for循環打印。 – Prabhakaran

+0

,因爲在輸入中也有兩個循環。可能應該在外面,成爲一個5x5,但只是保持一致。 –

-1

您必須在循環外定義i和j。否則,你只能在循環內使用它們:

int i; 
int j; 

int[] arrayCrit = new int[5]; 
String[] crits = new String[5]; 

for (i = 0; i < crits.length; i++) { 
    System.out.print("Criteria: "); 
    crits[i] = inpt.readLine(); 
    for (j = 0; j < arrayCrit.length; j++) { 
    System.out.print("Percentage: "); 
    arrayCrit[j] = Integer.parseInt(inpt.readLine()); 
    } 
} 
+0

我真的不認爲OP想要這個。 – SudoRahul

+1

如果在循環中定義它們,你可以在循環外使用i和j嗎?它不會給編譯錯誤?至少我得到它! – luanjot

+0

不,你不能使用它們,但這仍然不是問題的正確答案。最好提出在循環內部打印值(對每個元素),或者打印整個數組(如果OP想要的話)。你的「修復」會做的是打印兩個陣列中的最後一個元素。 – Matthias

0

您當前正在做的操作將會覆蓋爲下一個輸入輸入的值。我相信你想有一個2d陣列arrayCrit來存儲每個標準的所有百分比。只有在這種情況下,纔有意義有2 for循環。

String[] crits = new String[5]; 
int[][] arrayCrit = new int[5][5]; // The 2d array 

for (int i = 0; i < crits.length; i++) { 
    System.out.print("Criteria: "); 
    crits[i] = inpt.readLine(); 
    for (int j = 0; j < arrayCrit[i].length; j++) { 
     System.out.print("Percentage: "); 
     arrayCrit[i][j] = Integer.parseInt(inpt.readLine()); // Inputting different set of percentage for each criteria 
    } 
} 

// Displaying each criteria with its own percentages 
for (int i = 0; i < crits.length; i++) { 
    System.out.print("For Criteria: " + crits[i]+" ---> "); 
    for (int j = 0; j < arrayCrit[i].length; j++) { 
     System.out.print("Percentage " + j + " : " + arrayCrit[i][j] + "\t"); 
    } 
    System.out.println(); 
} 
0

1)for循環

for(int i=0; i<crits.length; i++){ //this will execute 5 times 
    System.out.print("Criteria: "); 
    crits[i]=inpt.readLine(); 
for (int j=0; j<arrayCrit.length; j++){ //this will execute 5 times for each i = 25 times 
    System.out.print("Percentage: "); 
    arrayCrit[j]=Integer.parseInt(inpt.readLine()); 
} 
} 

刪除嵌套for循環添加

import java.io.*; 

2)正在使用嵌套作爲

for(int i=0; i<crits.length; i++){ //this will execute 5 times 
    System.out.print("Criteria: "); 
    crits[i]=inpt.readLine(); 
} 
for (int j=0; j<arrayCrit.length; j++){ //this will execute 5 times 
    System.out.print("Percentage: "); 
    arrayCrit[j]=Integer.parseInt(inpt.readLine()); 
} 

3)can not find symbol
你想在同一時間打印的標準和比例,因爲你已經初始化大小5兩個數組,然後就可以直接打印

for (int i = 0; i < 5; i++) {  
    System.out.println(crits[i] + arrayCrit[i]); 
} 

4)可以使用下面的程序,它增強你的程序的版本

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 


public class TestArray { 
public static void main(String args[]) throws IOException { 
    BufferedReader 
    inpt = new BufferedReader(new InputStreamReader(System. in)); 

    System.out.println("How many records?");//ask for how many records 
    int n = Integer.parseInt(inpt.readLine());// store in n 

    int[] arrayCrit = new int[n];//create array with size n 
    String[] crits = new String[n]; 

     //**as you mentioned in edit you want to take all the input before printing**  
    for (int i = 0; i < n; i++) 
    { 
     System.out.print("Criteria: "); 
     crits[i] = inpt.readLine(); 

     System.out.print("Percentage: "); 
     arrayCrit[i] = Integer.parseInt(inpt.readLine());  
    } 
     //print both arrays 
    System.out.println("Criteria \t Percentage"); 
    for (int i = 0; i < n; i++) 
    { 
     System.out.println(crits[i] + "\t"+arrayCrit[i]); 
    }  
    } 
} 

有用的鏈接