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

从long到int的可能有损转换[重复]

杭胜
2023-03-14

我希望输入一个int和另一个longex: 1和1000000000,现在我希望创建一个大小为1000000000的数组。然后在数组的每个索引处,存储int val,ex:arr[100000000]=4

当我尝试执行此操作时,Netbeans 会向我显示此行中的错误:

arr = new long[y+1]` and `arr[j] = 0` 

“可能从long到int的有损转换”。这是我的密码:-

public static void main(String[] args) throws IOException       
{     
    BufferedReader s = new BufferedReader(new InputStreamReader(System.in));           
    String[] xe = s.readLine().split(" ");          
    int x = Integer.parseInt(xe[0]);        
    long y = Long.parseLong(xe[1]);
    long []arr;    
    arr = new long[y+1];     
    for(long j=0;j<=y;j++)     
    arr[j] = 4;     
} 

共有3个答案

索和璧
2023-03-14

您需要将/cast y和j转换为int。此外,当您只添加1时,递增的var应该不会太长。

司徒兴德
2023-03-14

数组的大小只能是一个int。也就是说,您不能创建大于Integer.MAX_VALUE(2147483647)的数组,可能少了几个元素(取决于VM)。您可以将您的值转换为int

arr = new long[(int)(y+1)];

但是,当< code>y的值实际上大于最大允许大小时,这将产生无效的结果。

申黎明
2023-03-14

数组索引是Java中的一个整数,编译器会建议您。所以最大数组大小是(大约)Integer.MAX_VALUE。对于更大的数组,您应该使用ArrayList。

绕着这泥土走

arr = new long[(int)y+1];  
 类似资料:
  • 我有这个程序,它几乎是一个计算器,但有一个移动的JLabel,每次你点击标签时都应该改变颜色,但我在代码的最底部有3个错误,我已经用注释标记了。所有三个都是:错误:不兼容类型:可能从长整型转换为整数

  • 问题内容: 我试图将long值传递给该方法,并在那里使用它来创建Long Array。但是,在创建数组时,出现“可能从long到int的有损转换”错误 尽管我还没有使用任何整数值。 问题答案: 数组维只能是类型。编译器期望使用该类型,但是您要传递一种类型。您可以更改传递给的参数类型,并进行相应的更改。 为了完整起见,这是JLS关于数组变量的内容 它们由使用非负 整数 索引值的数组访问表达式引用。

  • 我试图在Textpad中复制这个Java程序,但我收到以下错误 C:\Users\User\Desktop\java\Drawing.java:14: 错误: 不兼容的类型: 从 float 到 int g.drawLine ((getWidth()/2) , 0, (getWidth()*i) , (getHeight()/2)); 这是代码 在getWidth*i之前我已经尝试过添加(floa

  • 我有一个“从int到byte的可能有损转换”错误的问题,但我没有在代码中将整数转换为byte。 这是笔记本课 我不知道为什么我会得到这个错误。有人能帮助我吗?谢谢你。

  • 问题内容: 我已经定义了数组gx,数组arr为短型。但是为什么左边的运算可能会以int类型结束,而我必须将其转换为short?编译器错误可能是从int到short的有损转换。 这是我的代码。 } 那是因为所谓的拆箱吗?因此,这意味着我每次进行手术时都需要进行投射吗? 问题答案: 它不是开箱;这是“二进制数值提升”。 JLS的第5.6.2节规定: 当运算符将二进制数字提升应用于一对操作数时,每个操作