gpt4 book ai didi

java - 调试 Java 程序 - 字节转换器

转载 作者:行者123 更新时间:2023-12-02 03:54:15 28 4
gpt4 key购买 nike

问题:

编写一个程序,将给定数量的字节转换为更易于人类阅读的格式,方法是将其转换为以下格式之一:字节、千字节、兆字节、千兆字节或太字节。例如,1024 字节就是 1.00 KB(KB = 千字节)。

下面是我一直在尝试调试的代码,但到目前为止尚未成功。鉴于下面的错误消息,我对在哪里除以零感到困惑。

import java.text.DecimalFormat;
import java.util.Scanner;

class ByteConverter {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan1 = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("#.00");
long input1;
long conversionKilobyte;
long conversionMegabyte;
long conversionGigabyte;
long conversionTerabyte;


System.out.print("Enter number of bytes: ");
input1 = scan1.nextLong();

conversionKilobyte = input1 / 1024;
conversionMegabyte = input1 / 1048576;
conversionGigabyte = input1 / 1073741824;
conversionTerabyte = input1 / (long).1099511627776;

if (input1 > (long).1099511627775) {
System.out.println(input1 + " " + "Bytes is" + " " + conversionTerabyte + " " + "TB");
} else if (input1 >= 1073741824 && input1 <= (long).1099511627776) {
System.out.println(input1 + " " + "Bytes is" + " " + conversionGigabyte + " " + "GB");
} else if (input1 >= 1048576 && input1 <= 1073741823) {
System.out.println(input1 + " " + "Bytes is" + " " + conversionMegabyte + " " + "MB");
} else if (input1 >= 1024 && input1 <= 1048575) {
System.out.println(input1 + " " + "Bytes is" + " " + conversionKilobyte + " " + "KB");
} else {
System.out.println(input1 + " " + "Bytes is" + " " + df.format(input1) + " " + "B");
}

}
}

这是我收到的输入和错误消息。如有任何帮助,我们将不胜感激,谢谢!

(输入):输入字节数:5

(错误):线程“main”中出现异常 java.lang.ArithmeticException:/为零 在 ByteConverter.main(ByteConverter.java:23

最佳答案

使用小数点对于将 240 转换为 long 没有帮助。您实际上提供了一个 double 文字 .1099511627776,它小于 1,并且您将其转换为 long,这会产生0

请注意,删除小数点是不够的,因为 1099511627776 不是有效的 int 文字;该值太大。

使用L后缀指定long文字。

1099511627776L

或者,将 1L 向左移动 40 位。

1L << 40

关于java - 调试 Java 程序 - 字节转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35633144/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com