我是学习并行数组的新手,想知道如何仅使用并行数组有效地打印内容/元素,我尝试过但无法让它以我想要的方式工作和运行。
任务是:程序输入来自用户的整数,表示将输入多少人的信息。 然后,程序一次输入一个人的信息(先是名字,然后是年龄(,将这些信息存储在两个相关的数组中。
接下来,程序输入一个整数,表示列表中应显示其信息的人(要获取第一个人称的信息,用户将输入"1"(。 该程序会声明该人的姓名和年龄。
虽然我得到了名称和年龄来工作,直到用户输入的整数,但在那之后我不确定该怎么做
示例输入:
4
Vince
5
Alexina
8
Ahmed
4
Jorge
2
2 // I am confused about this part, how would I make it so that it prints the desired name,
//for example with this input, it should print:
示例输出:
Alexina is 8 years old
我的代码:
import java.util.Scanner;
class Example {
public static void main (String[] args) {
Scanner keyboard = new Scanner(System.in);
int[] numbers = new int[keyboard.nextInt()];
for (int x = 0; x < num.length; x++){
String[] name = {keyboard.next()};
int[] age = {keyboard.nextInt()};
}
int num2 = keyboard.nextInt();
System.out.println(); // what would I say here?
}
}
您需要重写代码,以便数组不会在循环中分配。 您希望向数组添加值,而不是每次都重置它们,并且您希望之后能够访问它们。 下面是代码的修改版本:
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int num = keyboard.nextInt();
keyboard.nextLine(); //you also need to consume the newline character(s)
String[] name = new String[num]; //declare the arrays outside the loop
int[] age = new int[num];
for (int x = 0; x < num; x++){
name[x] = keyboard.nextLine(); //add a value instead of resetting the array
age[x] = keyboard.nextInt();
keyboard.nextLine(); //again, consume the newline character(s) every time you call nextInt()
}
int num2 = keyboard.nextInt() - 1; //subtract one (array indices start at 0)
System.out.println(name[num2] + " is " + age[num2] + " years old"); //construct your string with your now-visible arrays
}
我认为你必须考虑 java 中的局部和全局变量用法。简而言之, 局部变量只能在方法或块中使用,局部变量仅适用于声明它的方法或块。 例如:
{
int y[]=new Int[4];
}
此 Y 数组只能在块内访问。全局变量必须在类体中的任何位置声明,但不能在任何方法或块中声明。如果变量声明为全局变量,则可以在类中的任何位置使用它。 在代码中,您尝试创建数组并在 For 循环之外使用它们。但是您的数组仅在 For 循环中有效。每次循环运行后,所有信息都将丢失。For 循环的每次迭代都会创建新的数组。
因此,为了访问和保存信息,您必须在 For 循环之前声明数组,并使用迭代号作为索引访问和存储数据。 最后,要打印收集的数据,必须将新输入扫描为整数变量。然后您可以根据需要访问数组。
//For example
int [] age=new int[4]; //global -Can access inside or outside the For loop
int[] numbers = new int[keyboard.nextInt()];
for (int x = 0; x < 4; x++){
age[x] = keyboard.nextInt(); //Local
}
int num2 = keyboard.nextInt();
System.out.println(age[num2]); // Here you have to access global arrays using num2 num2
}
}