简体   繁体   English

Java数组存储值

[英]Java Array Storing Values

I'm trying to store the values inputted on the for-loop structure that I will need for later use, but it can only be recognized inside the for loop structure. 我正在尝试存储在for循环结构上输入的值,这些值以后需要使用,但是只能在for循环结构内部识别。 I need the stored values to be recognize for the rest of the program but somehow I'm getting an error "cannot find symbol" 我需要在程序的其余部分识别存储的值,但是不知何故我遇到了错误“找不到符号”

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

Edit: Yes, I can move the print output inside the for-loop, but I need to input all the values first before showing all of it. 编辑:是的,我可以在for循环内移动打印输出,但是在显示所有输出之前,我需要先输入所有值。 Please I need help. 请我帮忙。

to show all you have to make another loop to read, after the insertion 显示所有插入后需要做的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])
            }
        }
    }
}

or I misunderstood your question? 还是我误解了你的问题?

Hope this will help. 希望这会有所帮助。

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

What you're currently doing will overwrite the values entered for the previous criteria when you get the input for the next. 当您获得下一个条件的输入时,当前正在执行的操作将覆盖为上一个条件输入的值。 I believe you want to have a 2d array for arrayCrit to store all the percentages for each criteria. 我相信您想为arrayCrit使用2d数组来存储每个条件的所有百分比。 Only in such a scenario it makes sense to have 2 for loops. 仅在这种情况下,才有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();
}

1) Add 1)添加

import java.io.*;  

2)You are using nested for loops 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 for each i = 25 times
    System.out.print("Percentage: ");
    arrayCrit[j]=Integer.parseInt(inpt.readLine());
 }
}

Remove nested for-loop as 删除嵌套的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 3) can not find symbol
You want to print criteria and percentage at same time, as you have initialized both arrays with size 5, then you can directly print 您要同时打印标准和百分比,因为已经初始化了两个大小为5的数组,那么您可以直接打印

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

4)You can use following program which is enhanced version of your program 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]);
    }       
  }
}

Useful link 有用的链接

You have to define i and j outside the loop. 您必须在循环之外定义i和j。 Otherwise, you can only use them inside the loop: 否则,您只能在循环内使用它们:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM