使用for/while statement和数组JAVA处理输入

使用for/while statement和数组JAVA处理输入,java,arrays,Java,Arrays,我知道这可能不是扫描输入并打印出来的最佳方式,但我想知道这是否可行。 我一直收到一个运行时错误。我做错了什么? 输入是1,2,3,4,5 我希望计算机在达到3时停止处理输入,这样它只能在标准输出窗口中打印1-3。 任何反馈都很好。多谢各位 import java.util.Scanner; public class numRewrite { public static void main(String[] args) { Scanner input = new Scanne

我知道这可能不是扫描输入并打印出来的最佳方式,但我想知道这是否可行。 我一直收到一个运行时错误。我做错了什么? 输入是1,2,3,4,5 我希望计算机在达到3时停止处理输入,这样它只能在标准输出窗口中打印1-3。 任何反馈都很好。多谢各位

import java.util.Scanner;

public class numRewrite {
  public static void main(String[] args) {    
    Scanner input = new Scanner(System.in);

    int[] numInput = {};
    int numPlace;

    for(numPlace = 0;numPlace < 4;numPlace++) {
        numInput[numPlace] = input.nextInt();
    }

    while(numInput[numPlace]!= 4) {
        System.out.println(numInput[numPlace]);     
    }
  }
}
import java.util.Scanner;
公共类numRewrite{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int[]numInput={};
int numPlace;
对于(numPlace=0;numPlace<4;numPlace++){
numInput[numPlace]=input.nextInt();
}
while(numInput[numPlace]!=4){
System.out.println(numInput[numPlace]);
}
}
}

发生了一些令人困惑的事情:

  • 您的
    input
    变量是一个
    int
    数组,您可以用长度为零对其进行初始化。如果您想使用一个随着添加内容而增长的列表,我建议使用真正的
    列表
    类型。看
    
  • 您也不会在while循环中增加
    numplace
    变量,这意味着您将永远打印出相同的值

Zin Minn提出了一个很好的观点,如果你真的想使用数组而不是列表,你可以用5的大小初始化它。

首先你必须声明numInput数组:
int[]numInput=new int[5]

使用循环读取用户输入,并仅打印用户键入的前三个整数:

for (int numPlace = 0; numPlace < 5; numPlace++) {
 numInput[numPlace] = input.nextInt(); 
  if(numPlace <3) 
     System.out.println(numInput[numPlace]);
    }
for(int numPlace=0;numPlace<5;numPlace++){
numInput[numPlace]=input.nextInt();

如果(numPlace您的代码和您想要实现的不匹配。如果需要,可以使用扫描仪读取用户或文件的输入。根据我对您提供的内容的理解,我认为您正在寻找以下内容:

public class numRewrite {
  public static void main(String[] args) {  


int[] numInput = {1,2,3,4,5};


for(int numPlace = 0;numPlace < 3;numPlace++) {
    System.out.println(numInput[numPlace]);
    }


   }
}
公共类numRewrite{
公共静态void main(字符串[]args){
int[]numInput={1,2,3,4,5};
对于(int numPlace=0;numPlace<3;numPlace++){
System.out.println(numInput[numPlace]);
}
}
}
如果您没有从输入的用户处读取输入,则不需要扫描仪

如果您正在寻找用户的输入,那么您可能正在寻找这个

import java.util.Scanner;

public class numRewrite {
  public static void main(String[] args) {    
    Scanner input = new Scanner(System.in);

    int[] numInput = new int[5];
    int numPlace;

    for(numPlace = 0;numPlace < 5;numPlace++) {
        System.out.println("Enter input: ");
        numInput[numPlace] = input.nextInt();
    }

    for(int i = 0; i < 3; i++){
        System.out.println(numInput[i]);
    }
  }
}
import java.util.Scanner;
公共类numRewrite{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int[]numInput=newint[5];
int numPlace;
对于(numPlace=0;numPlace<5;numPlace++){
System.out.println(“输入:”);
numInput[numPlace]=input.nextInt();
}
对于(int i=0;i<3;i++){
System.out.println(numInput[i]);
}
}
}
您有很多问题

我想您说过希望用户输入5个值,然后程序应该输出1-3个值

您没有在while循环中增加var。您的输入只会增加到3。您没有初始化数组

import java.util.Scanner;

public class numRewrite {
  public static void main(String[] args) {    
    Scanner input = new Scanner(System.in);

    int[] numInput = new int[5];

    for(int numPlace = 0; numPlace < 5; numPlace++) {
        numInput[numPlace] = input.nextInt();
    }

    while(int numPlace != 3) {
        System.out.println(numInput[numPlace++]);     
    }
  }
}
import java.util.Scanner;
公共类numRewrite{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int[]numInput=newint[5];
对于(int numPlace=0;numPlace<5;numPlace++){
numInput[numPlace]=input.nextInt();
}
while(int numPlace!=3){
System.out.println(numInput[numPlace++]);
}
}
}

您使用的是固定大小的int[]

声明此数组后,无法更改大小

您可以使用ArrayList,因为它不是固定大小的数组,并且可以扩展

如果要使用int[],则必须初始化大小

例如:

int[] numInput = new int[5];

您的数组长度为0,因为您是使用
{}
创建它的。这意味着您不能在其中存储任何内容。欢迎使用。仅使用代码的答案不太适合此网站,我们希望您能解释OP的问题,以及您提供的代码修复问题的原因。请阅读
int[] numInput = new int[5];