【问题标题】:Java Array Storing ValuesJava 数组存储值
【发布时间】:2013-10-24 10:08:14
【问题描述】:

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

【问题讨论】:

  • 感谢大家的帮助,谢谢。

标签: java arrays for-loop


【解决方案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])
            }
        }
    }
}

还是我误解了你的问题?

【讨论】:

  • 为什么要使用两个 for 循环来打印。
  • 因为在输入中也有两个循环。可能应该在外面,成为 5x5,但要保持连贯性。
【解决方案2】:

你必须在循环外定义 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());
  }
}

【讨论】:

  • 我真的不认为 OP 想要这个。
  • 如果在循环内定义 i 和 j 可以在循环外使用吗?它不会给出编译错误吗?至少我明白了!
  • 不,您不能使用它们,但这仍然不是问题的正确答案。最好建议打印循环内的值(因此对于每个元素)或打印整个数组(如果这是 OP 想要的)。您的“修复”要做的是打印两个数组中的最后一个元素。
【解决方案3】:

希望这会有所帮助。

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

【讨论】:

    【解决方案4】:

    当您获得下一个条件的输入时,您当前正在执行的操作将覆盖为上一个条件输入的值。我相信您希望为arrayCrit 提供一个2d 数组来存储每个标准的所有百分比。只有在这种情况下,有 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();
    }
    

    【讨论】:

      【解决方案5】:

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

      有用的链接

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2015-02-17
        • 2013-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多