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

为什么输出1 2 3 3不是1 2 3 1整数除法[重复]

谭文林
2023-03-14

为什么这个程序的输出是1233而不是1231

class Scratch {
    public static void main(String[] args) {
        int[] a = { 1, 2, 3, 4, 5, 3 };
        for (int i = 0; i < 6; i++)
            System.out.print(a[i / 2] + " ");
    }
}

当你除以3/2,它等于1.5,我认为Java只取整数的第一个值。发生什么事?

共有3个答案

诸葛砚文
2023-03-14

因为循环的最后一个数字是5。然后5/2=2.5,java将其转换为2。如果你看到你的数组,它显示在位置2,打印的数字是3。

陶原
2023-03-14

循环的最后一次迭代将在i=5时进行。5/2 = 2. a[2]=3。

年光明
2023-03-14

您正在分割索引而不是值。为了得到你想要的结果,你应该把除法放在方括号外:

System.out.print(a[i] / 2 + " ");
// Here --------------^
 类似资料:
  • 我是java初学者,我对上述程序的输出感到困惑。请给我解释一下输出的原因。

  • 我的理解是 x == 0 首先运行。但是 x 在计算时仍然是 -1 (y = y / x) == 0?否则它将除以零。我以为输出将是 -5,但日食说 5。我快疯了。

  • 问题内容: 考虑以下代码: 编译产生错误 因为表达式i / j的类型显然是int,因此必须将其强制转换为short。 为什么类型不短? 问题答案: 从Java规范: 5.6.2二进制数值提升 当运算符将二进制数值提升应用于一对操作数时,每个操作数必须表示一个数值类型的值,以下规则按顺序适用,并根据需要使用加宽转换(第5.1.2节)来转换操作数: 如果一个操作数的类型为double,则另一个将转换为

  • 我正在阅读的一本c编程书(c编程,现代方法第2版)说,当“在对无符号整数的操作期间发生溢出时,结果是定义的”。 下面是一个小代码示例 然后他说“对于有符号整数,这些整数的行为没有定义”。这意味着程序可以打印出不正确的结果,也可以使程序崩溃。 为什么会这样?

  • 我有 tyo 字节变量 如果我对它们求和,sum的值是整数。 为什么 b 是整数?

  • 所以,这可能是一个愚蠢的问题,但据我所知,如果我通过TCP或UDP发送数据,如果组成该TCP/UDP数据包的任何一个IP数据包被丢弃,整个TCP/UDP数据包将被重传,但我的问题是为什么我们不能只发送丢失的部分数据吗?目前,我对此的唯一推理是,如果我们要为收到的每个IP数据包发送确认字符,这将增加网络拥塞。这是正确的,还是有其他原因,当只有一个或几个IP数据包被丢弃时,我们必须重新发送TCP/UD