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

Java:不兼容的类型:ArrayList无法转换为int

金阳华
2023-03-14

我收到一个错误,指出ArrayList不能在我的返回arr上转换为int

我正在编写一个程序,在这个程序中,我必须从一个文件中读取所有整数,并计算它们的总和。我还处理所有异常,因此如果抛出异常,函数应该返回0。

这是我的代码

 public static int intFileSum(String fileName) 
    {
        ArrayList<Integer> arr=new ArrayList<Integer>();
        InputStream fis=new FileInputStream(fileName);
        Scanner s=new Scanner(fis);
        try {
            while (s.hasNextInt()) {
                arr.add(s.nextInt());
            }
        }
        catch (FileNotFoundException e) {
            return 0;
        } catch (IOException f) {
            return 0;
        } finally {
            fis.close();
            s.close();
            return arr;
        }
    }

下面是我的单元测试,读取文件后应该通过:

public void testSumIntsHappyPath() throws Exception
    {       
        int sum=Assignment11.intFileSum("inputs/ints1.txt");
        Assert.assertEquals(10, sum);

        sum=Assignment11.intFileSum("inputs/ints2.txt");
        Assert.assertEquals(56, sum);   
    }   

感谢您的帮助。

谢谢!

共有3个答案

齐建安
2023-03-14

到目前为止,您所做的就是从文件中读取所有数据并将其放入数组中(add方法将元素添加到数组中,它不计算任何和)。然后您尝试返回arr数组,但方法返回类型为int,这导致了错误。

相反,尝试这样的方法(我认为您甚至不需要阵列,除非您计划稍后将其用于其他用途):

int TOTAL = 0;
while (s.hasNextInt()) {
    TOTAL += s.nextInt();
}

然后不是“返回arr;”你想:

return TOTAL; 

注意:您可能还必须为有效输入添加一些检查。

笪德华
2023-03-14
匿名用户

数组列表。add()不进行求和运算。它将元素添加到列表中。

裁判:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#add(E)

使用以下代码:

结果s.next

代替:arr.add(s.nextInt())

在循环外声明int result,并返回result,而不是arr

丁学
2023-03-14

你为什么需要Arraylist?

你想对这些数字求和,那么就这样做吧。

 public static int intFileSum(String fileName) {
    int sum = 0;
    InputStream fis=new FileInputStream(fileName);
    Scanner s=new Scanner(fis);
    try {
        while (s.hasNextInt()) {
            sum += s.nextInt();

然后,返回和

 类似资料:
  • 问题内容: 一般来说,对于Java和编程,我是一个新手。我正在尝试创建一个简单的程序,您可以在其中猜测我的年龄,如果您是对的,它将说“正确”,如果您错了,它将说“错”。 这是我的代码: 我收到错误消息“不兼容的类型:void无法转换为int”,但代码中没有void类?我知道我的代码可能很糟糕,但是如果你们能为我指出正确的方向,那就太好了。谢谢。 问题答案: 您的程序不必返回in 。相反,您可以将其

  • 而当运行时,我收到的是: 错误:不兼容类型:int无法转换为客户端ClientDAO.Delete(clientId);

  • 我试图通过在一个单独的线程上进行工作并返回所需的对象来更改JavaFX中的GUI。然而,在完成工作和任务之后。setOnSucceeded()在尝试检索创建的对象时被触发,并出现错误“不兼容类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为这是在听众中发生的,但环顾四周后,我找不到我想要的建议。 任何可以散发的光芒都将不胜感激。

  • 问题内容: 我试图通过在单独的线程上进行工作并返回所需的对象来对JavaFX中的GUI进行更改。但是,在完成工作和task.setOnSucceeded()之后,我尝试检索创建的对象并得到错误“不兼容的类型:对象无法转换为VideoScrollPane类型”。 我认为这与原始类型有关,因为它发生在侦听器中,但是四处查看后,我找不到我想要的建议。 任何可以散发出的光将不胜感激。 问题答案: 这是因为

  • 当我想做Apk文件时,我得到了8个错误,我希望有人帮助我修复它 任务:app:CompileReleaseJavaWithJavac失败C:\codes\code\app\src\main\Java\com\insta\followers\tagsactivity.Java:61:错误:不兼容类型:视图无法转换为LinearLayout unitBanner=findViewById(r.id.u