当前位置: 首页 > 知识库问答 >
问题:

有没有办法消除我遇到的错误?

韦绍晖
2023-03-14
import java.util.ArrayList;
import java.util.*;

public class Solution { 
    public static void main (String args []){
        ArrayList<String> cars=new ArrayList<String>();

        Scanner sc =new Scanner (System.in);
        System.out.println(" enter the size of the list ");
        int size=sc.nextInt();
        

        for( int i =0;i<size;i++){ 
             
             cars.add(i,sc.nextLine());
     
        }
        System.out.println(cars);
        sc.close();
    }
}

这个程序应该输出

1,2,3,4

但是如果我输入的大小是4,我只输入这些值,但是如果我写的大小是4。。。它不需要我提供4个参数,而是需要3个参数并打印('',1,2,3)

请帮帮忙

共有3个答案

尉迟正奇
2023-03-14

当你做列表时。add(i,value)它所做的是将值保留在of列表的i索引中
什么。下一行是否读取下一行的空白,这会导致列表的第一个位置出现*空格*所以当你在做汽车时。add(i,sc.nextLine())这是在第一个索引ie0中添加空格。你能做的就是。

for( int i =0;i<size;i++){ 
      cars.add(i,sc.next());
    }

当你执行sc.next()时,它会检查下一个字符,而不是遍历下一行。

李凯定
2023-03-14

您需要在for循环之前添加sc.nextLine()

当您输入一个数字时,然后按enter输入。nextInt()只取数字,不取行尾。但是,当您执行输入时。nextLine(),它从第一个输入中获取已经在缓冲区中的行的末尾。始终使用输入。nextLine()输入后立即执行。nextInt()

您试图接受一个数字,但已将数组列表类型声明为字符串。您的代码将如下所示

import java.util.ArrayList;

import java.util.*;
public class Main
{
    public static void main(String[] args) {
    
        ArrayList<String> cars=new ArrayList<String>();
        Scanner sc =new Scanner (System.in);
        System.out.println(" enter the size of the list ");
        int size=sc.nextInt();
        
        sc.nextLine();
        for( int i =0;i<size;i++){ 
             cars.add(i,sc.nextLine());
        }
        System.out.println(cars);
        sc.close();
    }
}
浦琪
2023-03-14

nextLine()遍历指向下一行的指针。所以使用next解决了这个问题

import java.util.ArrayList;

import java.util.*;
public class Solution { 
    public static void main (String args []){
       ArrayList<String> cars=new ArrayList<String>();

       Scanner sc =new Scanner (System.in);
        System.out.println(" enter the size of the list ");
        int size=sc.nextInt();
        

        for( int i =0;i<size;i++){ 
            System.out.println(" enter the " + i + " number : ");
            cars.add(i, sc.next());
     
        }
        System.out.println(cars);
        sc.close();
    }
}
 类似资料:
  • 问题内容: 我知道您可以通过执行 node.requestFocus(); 来将焦点集中在javafx中的一个节点上 。 但是有没有办法从javafx中的节点上夺走焦点或阻止对某个对象的焦点? 问题答案: 我不认为有任何保证将始终有效,但是您可以尝试将焦点设置为本质上不接受键盘输入的内容(例如布局窗格):

  • 问题内容: 是否有可能以某种方式忽略此错误?我发现将自己不想运行的代码放在前面比注释它要容易得多(当注释重叠并且表现不佳时)… 问题答案: 否。这是编译时错误。因此,在运行课程之前,您 必须 摆脱它。 我通常要做的是在其前面放置一个虚假陈述。就像是: 使用此代码,您将不会出错。您将得到想要的东西。

  • 我在本地计算机上将一条太大的消息推送到Kafka消息主题中,现在我收到一个错误: 增加在这里并不理想,因为我实际上不想接受那么大的消息。

  • 我正在编写一个JavaFractal Explorer,分形计算是多线程完成的。以前,我只是创建了一堆线程(系统有多少处理器内核就有多少)并将它们保存在一个数组中,但这会导致一些问题,而且不是很优雅,现在我想切换到执行器。 我需要的功能是: 用户可以随时选择要放大的分形图像的新区域,因此应该可以随时取消计算,并立即重新插入新任务 我的问题是Java ExecutorService(我使用Execu

  • 我认为这些信息在开始的时候真的很重要,但是后来就没有用了。它实际上使读取和调试的情况变得更糟。 I tensorflow/流执行器/dso加载器。cc:128]已成功打开CUDA库libcublas。所以8.0本地I tensorflow/流执行器/dso加载器。抄送:119]无法打开CUDA库libcudnn。所以LD_库路径:I tensorflow/stream_executor/cuda/

  • 问题内容: 我有一种方法可以做很多事情。其中包括进行大量插入和更新。因此宣布… 它的工作完全符合预期,我对此没有任何问题。但是在某些情况下,尽管没有异常,但我还是想强制回滚…目前,当我遇到合适的条件时,我正在强制异常,但这很丑陋,我不喜欢它。 我可以以某种方式积极地调用回滚吗?异常调用它…我在想也许我也可以。 问题答案: 在Spring Transactions中,您使用。 您在这里遇到的问题是您