java数组输入问题,求解原因和解决方法

这段代码是为了输入指定长度的数组,保存到用动态数组里publicvoidInputArray(){intarraylength;//输入的数组长度Scannersc=ne... 这段代码是为了输入指定长度的数组,保存到用动态数组里
public void InputArray(){
int arraylength; //输入的数组长度 Scanner sc = new Scanner(System.in); System.out.print("请输入数组的长度:"); arraylength = sc.nextInt(); ArrayList<String> arr=new ArrayList<String>(); //输入String类型的动态数组 for(int i = 0;i<arraylength;i++) { System.out.print("请输入String数组的内容:"); String scanner=sc.nextLine(); arr.add(scanner);
}
把循环的nextLine改为next,可以正常运行,但是输入String的内容不能有空格;如果是nextLine的话,输入完长度,按下enter之后就会运行异常,直接显示两段内容
展开
 我来答
百度网友f0d446b4
推荐于2016-06-25 · 超过12用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:25.5万
展开全部

小朋友,蜀黍告诉你,

public void InputArray(){

      int arraylength;            //输入的数组长度

      Scanner sc = new Scanner(System.in);

      System.out.print("请输入数组的长度:");

          arraylength = sc.nextInt();

      ArrayList<String> arr=new ArrayList<String>();      //输入String类型的动态数组

     sc.nextLine();

      for(int i = 0;i<arraylength;i++)

      {

          System.out.print("请输入String数组的内容:");

          String scanner=sc.nextLine();

          arr.add(scanner);  

nextInt()方法会读取下一个int型标志的token.但是焦点不会移动到下一行,仍然处在这一行上。当使用nextLine()方法时会读取改行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头。所以这样就无法接收到下一行输入的String类型的变量。所以你看你“请输入String数组的内容”这句话显示了两遍才能输入,第一遍实际上由于读入空字符跳过了,为了正确读取数据,加一句sc.nextLine();就可以跳过这个分隔符,下面也就可以正常输入了,懂了吗

Alan_Turing__
2015-03-06 · TA获得超过1201个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:415万
展开全部

你好:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {

public static void main(String[] args) throws IOException{
InputArray();
}

public static void InputArray()throws IOException{
      int arraylength;            //输入的数组长度
      BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
      System.out.print("请输入数组的长度:");
          arraylength = Integer.parseInt(input.readLine());
      ArrayList<String> arr=new ArrayList<String>();      //输入String类型的动态数组
      for(int i = 0;i<arraylength;i++)
      {
          System.out.print("请输入String数组的内容:");
          String scanner=input.readLine();
          arr.add(scanner);  
      }

}

运行结果:

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式