调试Java程序-字节转换器
问题: 编写一个程序,通过将给定数量的字节转换为以下格式之一,将其转换为更易于阅读的格式:字节、千字节、兆字节、千兆字节或兆字节。例如,1024字节将是1.00KB(KB=KB) 下面是我一直试图调试的代码,但迄今为止还没有成功。考虑到下面的错误消息,我不知道我将在哪里除以零调试Java程序-字节转换器,java,debugging,Java,Debugging,问题: 编写一个程序,通过将给定数量的字节转换为以下格式之一,将其转换为更易于阅读的格式:字节、千字节、兆字节、千兆字节或兆字节。例如,1024字节将是1.00KB(KB=KB) 下面是我一直试图调试的代码,但迄今为止还没有成功。考虑到下面的错误消息,我不知道我将在哪里除以零 import java.text.DecimalFormat; import java.util.Scanner; class ByteConverter { public static void main(S
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");
}
}
}
导入java.text.DecimalFormat;
导入java.util.Scanner;
类字节转换器{
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
扫描仪scan1=新扫描仪(System.in);
DecimalFormat df=新的DecimalFormat(#.00”);
长输入1;
长转换千字节;
长转换兆字节;
长转换字节;
长转化率;
System.out.print(“输入字节数:”);
input1=scan1.nextLong();
转换千字节=输入1/1024;
conversionMegabyte=input1/1048576;
conversionigabyte=input1/1073741824;
ConversionTrabayte=input1/(长)。109951162776;
如果(输入1>(长).109951162775){
System.out.println(input1++“字节”为“++”转换字节+++“TB”);
}否则如果(input1>=1073741824&&input1=1048576&&input1=1024&&input1使用小数点无助于将240转换为长的。您实际上提供了双精度文本,.109951162776
,小于1,您正在将其转换为长的,从而产生0
请注意,删除小数点是不够的,因为109951162776
不是有效的int
文本;该值太大
使用L
后缀指定long
文字
1099511627776L
或者,将1L
左移40位
1L << 40
1L使用小数点无助于将240转换为长
。您实际上提供了双
文本,.109951162776
,小于1,您将其转换为长
,从而产生0
请注意,删除小数点是不够的,因为109951162776
不是有效的int
文本;该值太大
使用L
后缀指定long
文字
1099511627776L
或者,将1L
左移40位
1L << 40
1L尝试读取错误消息:
(Error): Exception in thread "main" java.lang.ArithmeticException: / by zero at ByteConverter.main(ByteConverter.java:23
“23”表示行号,因此错误位于第23行(长)。109951162776必须为零
(Error): Exception in thread "main" java.lang.ArithmeticException: / by zero at ByteConverter.main(ByteConverter.java:23
“23”表示行号,因此错误在第23行(长)。109951162776必须为零。您认为(长)。109951162776
的值是多少?您认为(长)。109951162776
的值是多少?