java用户定义数组(和用户定义数组大小)返回[null,null,null,…]
这是我在这个网站上的第一个问题,我在NetBeans 8.0.2上运行它,并试图打印出我的用户定义数组,但它总是返回空值。例如,如果您说有两名员工,并输入他们的姓名,则返回[null,null] 如何修复此错误?我是个新手java用户定义数组(和用户定义数组大小)返回[null,null,null,…],java,arrays,null,user-defined,Java,Arrays,Null,User Defined,这是我在这个网站上的第一个问题,我在NetBeans 8.0.2上运行它,并试图打印出我的用户定义数组,但它总是返回空值。例如,如果您说有两名员工,并输入他们的姓名,则返回[null,null] 如何修复此错误?我是个新手 import java.util.Scanner; import java.text.DecimalFormat; import java.util.Arrays; class Tips_Calculation2 { public static void main(Str
import java.util.Scanner;
import java.text.DecimalFormat;
import java.util.Arrays;
class Tips_Calculation2
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.print("How many employees for the week?: ");
int numberOfEmps = scan.nextInt();
// counter for the if statement that should return all employees from the array
int counter = numberOfEmps;
int[] nOEarray = new int[numberOfEmps];
System.out.println("\nEnter names of workers up to the entered amount (" + numberOfEmps + "):");
for(int i = 1; i <= numberOfEmps; i++)
{
String nameCycler = scan.next();
String[] namesArray = new String[i];
if(counter == i)
{
System.out.println(Arrays.toString(namesArray));
}
}
}
}
import java.util.Scanner;
导入java.text.DecimalFormat;
导入java.util.array;
课堂技巧与计算2
{
公共静态void main(字符串[]args)
{
扫描仪扫描=新扫描仪(System.in);
System.out.print(“一周有多少员工?”:”;
int numberOfEmps=scan.nextInt();
//if语句的计数器,该语句应返回数组中的所有雇员
int计数器=电磁脉冲数;
int[]nOEarray=newint[numberOfEmps];
System.out.println(“\n输入输入金额(“+numberOfEmps+”)之前的工人姓名:”;
对于(inti=1;i“如何修复此错误”不是。这不是错误
String[] namesArray = new String[i]; // step one, you declare an array of Strings
// which you don't initialize
if(counter == i)
{
System.out.println(Arrays.toString(namesArray));
//you print all the (non-initialized) elements of namesArray
//since you didn't initialize the elements, it takes the default value, which is null
}
在尝试打印之前,请先用字符串填充数组元素。首先,您从未将nameCycler
放在数组中。其次,在我认为错误的每次迭代中,您都会创建namesArray
。您从未将名称分配给数组,并且在每次迭代中都会定义新的数组:
String[] namesArray = new String[numberOfEmps];
for(int i = 1; i <= numberOfEmps; i++)
{
String nameCycler = scan.next();
namesArray [i] = nameCycler ;
if(counter == i)
{
System.out.println(Arrays.toString(namesArray));
}
}
String[]namesArray=新字符串[numberOfEmps];
对于(int i=1;i您在循环的每次传递上都创建了一个全新的(充满了null
)数组namesArray
,然后从不给它赋值。我想您是在寻找类似的东西。请注意,Java索引是从零开始的,而不是从一开始的
String[] names = new String[numberOfEmps]
for(int i = 0; i < names.length; i++) {
names[i] = scanner.next();
}
System.out.println(Arrays.toString(names));
String[]name=新字符串[numberOfEmps]
for(int i=0;i
在代码中添加注释以指出更改
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("How many employees for the week?: ");
int numberOfEmps = scan.nextInt();
// removed 'nOEarray' and 'counter'
if (numberOfEmps > 0) {
System.out.println("\nEnter names of workers up to the entered amount (" + numberOfEmps + "):");
// initializing 'namesArray' outside for loop.
String[] namesArray = new String[numberOfEmps];
for(int i = 0; i < numberOfEmps; i++) { // initialized with 0 and updated condition with '<'
namesArray[i] = scan.next(); // assigning value to 'i'th position of namesArray
}
System.out.println(Arrays.toString(namesArray)); // Printing array outside for loop
}
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“一周有多少员工?”:”;
int numberOfEmps=scan.nextInt();
//删除了“数组”和“计数器”
如果(numberOfEmps>0){
System.out.println(“\n输入输入金额(“+numberOfEmps+”)之前的工人姓名:”;
//正在为循环外部初始化“namesArray”。
字符串[]名称数组=新字符串[numberOfEmps];
对于(int i=0;i
for(int i = 1; i <= numberOfEmps; i++)
{
String nameCycler = scan.next();
String[] namesArray = new String[i];
if(counter == i)
{
System.out.println(Arrays.toString(namesArray));
}
}
for(int i=1;i首先,您应该在循环外部初始化数组。其次,您忘记了将名称设置为数组值
试试这个:
import java.util.Scanner;
import java.text.DecimalFormat;
import java.util.Arrays;
class Tips_Calculation2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("How many employees for the week?: ");
int numberOfEmps = scan.nextInt();
int[] nOEarray = new int[numberOfEmps];
System.out.println("\nEnter names of workers up to the entered amount (" + numberOfEmps + "):");
String[] namesArray = new String[numberOfEmps];
for (int i = 0; i < numberOfEmps; i++) {
namesArray[i] = scan.next();
}
System.out.println(Arrays.toString(namesArray));
}
}
import java.util.Scanner;
导入java.text.DecimalFormat;
导入java.util.array;
课堂技巧与计算2{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“一周有多少员工?”:”;
int numberOfEmps=scan.nextInt();
int[]nOEarray=newint[numberOfEmps];
System.out.println(“\n输入输入金额(“+numberOfEmps+”)之前的工人姓名:”;
字符串[]名称数组=新字符串[numberOfEmps];
for(int i=0;i
counter
作为一个单独的变量有什么意义?只需使用numberOfEmps
,或者更好的方法是使用nOEarray.length
。他说“我是新手”,他将来会发现它没用;)保证索引自动边界感知。
import java.util.Scanner;
import java.text.DecimalFormat;
import java.util.Arrays;
class Tips_Calculation2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("How many employees for the week?: ");
int numberOfEmps = scan.nextInt();
int[] nOEarray = new int[numberOfEmps];
System.out.println("\nEnter names of workers up to the entered amount (" + numberOfEmps + "):");
String[] namesArray = new String[numberOfEmps];
for (int i = 0; i < numberOfEmps; i++) {
namesArray[i] = scan.next();
}
System.out.println(Arrays.toString(namesArray));
}
}