gpt4 book ai didi

java - 我计算光行进距离的代码出错

转载 作者:行者123 更新时间:2023-12-01 17:54:39 25 4
gpt4 key购买 nike

我需要编写一个程序,生成 5 行输出,显示程序运行时自 Unix 纪元以来光(在真空中)传播的距离。

  1. 字符串:“自 Unix 纪元以来,光已经传播......”。
  2. 公里数(假设光速恰好为 299792458 m/s):x.xxx 公里。
  3. 天文单位数,假设 149597870700.0 m/au:x.xxx au。
  4. 光年数,假设 9460730472580800.0 m/ly:x.xxx ly。
  5. 秒差距数,假设为 3.085677581e16 m/pc(请注意,3.085677581e16 是 Java 用普通科学记数法表示 3.085677581⋅10^16 的方式):x.xxx 电脑。

在我的代码中,我收到整数过高的错误,并且在使用 print 方法时遇到问题。有人可以帮忙吗?

我收到的错误是:

 Assignment02.java:16: error: integer number too large: 9460730472580
long ly = km / 9460730472580;
^
Assignment02.java:20: error: ')' expected
"Since the Unix epoch, light has traveled..."
^
Assignment02.java:25: error: not a statement
(km), au, ly, pc);
^
Assignment02.java:25: error: ';' expected
(km), au, ly, pc);
^
Assignment02.java:25: error: not a statement
(km), au, ly, pc);
^
Assignment02.java:25: error: ';' expected
(km), au, ly, pc);
^
Assignment02.java:25: error: not a statement
(km), au, ly, pc);
^
Assignment02.java:25: error: ';' expected
(km), au, ly, pc);
^
Assignment02.java:25: error: not a statement
(km), au, ly, pc);
^
Assignment02.java:25: error: ';' expected
(km), au, ly, pc);

这是我的代码:

public class Assignment02  {

public static void main (String[] args) {

// Stores the return value of System.currentTimeMillis() in variab$
long now = System.currentTimeMillis();
// Calculation of how far light has travelled until "now" in kilometer$
long km = (299792 * now)/1000 ;
// Calculatuion of how far light has travelled until "now" in astronomical units$
long au = km / 149597870;
// Calculation of how far light has travelled until "now" in light years$
long ly = km / 9460730472580;
// Calculation of how far light has traveled until "now" in parsecs
long pc = km / 3.085677581e16;
System.out.printf(
"Since the Unix epoch, light has traveled..."+
"%d km"+
"%d au"+
"%d ly"+
"%d pc",
(km), au, ly, pc);

}

}

最佳答案

您可以像这样修复编译错误并打印语句:

  • 在大整数值末尾添加了 L,使其成为 long 文字。
  • 添加了对 long 的强制转换以转换 double 值。
  • 添加了 %n 来打印格式字符串,以便在输出中添加换行符。
long now = System.currentTimeMillis();
long km = (299792 * now)/1000 ;
long au = km / 149597870;
long ly = km / 9460730472580L;
long pc = (long) (km / 3.085677581e16);
System.out.printf("Since the Unix epoch, light has traveled...%n"+
"%d km%n"+
"%d au%n"+
"%d ly%n"+
"%d pc",
(km), au, ly, pc);

当然,您可能实际上想要输出double值,而不是long值:

long now = System.currentTimeMillis();
long km = (299792 * now)/1000 ;
long au = km / 149597870;
double ly = km / 9460730472580d;
double pc = km / 3.085677581e16;
System.out.printf("Since the Unix epoch, light has traveled...%n"+
"%d km%n"+
"%d au%n"+
"%.1f ly%n"+
"%f pc",
(km), au, ly, pc);

输出

Since the Unix epoch, light has traveled...
451349163977648 km
3017082 au
47.7 ly
0.014627 pc

关于java - 我计算光行进距离的代码出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250431/

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