2

我正在尝试存储在 for 循环结构中输入的值以供以后使用,但它只能在 for 循环结构内被识别。我需要为程序的其余部分识别存储的值,但不知何故我收到错误“找不到符号”

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 循环内移动打印输出,但我需要先输入所有值,然后再显示所有值。请我需要帮助。

4

5 回答 5

2

显示所有你必须让另一个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])
            }
        }
    }
}

还是我误解了你的问题?

于 2013-10-16T10:27:51.213 回答
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]);
    }
}
于 2013-10-16T10:42:07.333 回答
0

当您获得下一个条件的输入时,您当前正在执行的操作将覆盖为上一个条件输入的值。我相信你想要一个2d数组arrayCrit来存储每个标准的所有百分比。for只有在这种情况下,有 2 个循环才有意义。

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();
}
于 2013-10-16T10:42:48.350 回答
0

1) 添加

import java.io.*;  

2)您正在使用嵌套的 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 循环删除为

 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]);
    }       
  }
}

有用的链接

于 2013-10-16T10:57:13.047 回答
-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());
  }
}
于 2013-10-16T10:34:29.577 回答