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

除法时的有损转换(long到int)[重复]

柯鸿云
2023-03-14

我试图在一个数组(类型为long)中找到中间的索引我正在解决的问题特别要求返回一个long,所以我不能更改签名我想在我的quicksort代码中找到支点,但是我得到一个错误“可能有损于从long到int的转换”我知道在除法时我可能会丢失一些信息,但是我想绕过它下面是包含错误的代码:

public static long partition(long[] array, long left, long right){
    long i = left, j = right;
    long tmp;
    long pivot = array[(left + right) / 2];  // <-----ERROR HERE  <------

    while(i <= j) {
        while(array[i] < pivot){
        i--;
       }
       while(array[j] > pivot) {
           j--;
       }
       if(i <= j) {
           tmp =array[i];
           array[i] = array[j];
           array[j] = tmp;
           i++;
           j--;
       }
       }
    return i;
}

共有3个答案

满子实
2023-03-14

我尝试将long类型转换为int,例如..long pivot=array[(int)((left right)/2)];它适用于我,请您详细说明在哪种情况下会出现“从long到int可能的有损转换”错误。

娄振
2023-03-14

使用 “array[index]”,这个 “index” 必须是 int. 所以

long pivot = array[(int)((left + right) / 2)];
公胤运
2023-03-14

来自JLS第10.4节:

数组必须由索引

左右参数(以及 ij)使用 long 是没有意义的(因为数组不能有那么多元素),并且会导致编译时错误。将它们更改为 int

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

  • 我希望输入一个和另一个ex: 1和1000000000,现在我希望创建一个大小为1000000000的数组。然后在数组的每个索引处,存储int val,ex:。 当我尝试执行此操作时,Netbeans 会向我显示此行中的错误: “可能从long到int的有损转换”。这是我的密码:-

  • 问题内容: 我试图将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。 这是笔记本课 我不知道为什么我会得到这个错误。有人能帮助我吗?谢谢你。