这是我的代码。我想显示月份的名称而不是数字。但是我的代码中有一个错误。
import java.util.Scanner;
import java.util.Date;
public class myIDCard{
public static void main(String[] args){
long myID;
long a,b,c,a1,a2,a3;
Scanner in = new Scanner(System.in);
System.out.print("Enter your Name: ");
String name = in.nextLine();
System.out.print("Enter your IC number without dash: ");
myID = in.nextLong();
in.nextLine();
a = myID/1000000;
b = myID/10000%100;
c = myID%10000;
a1 = a%100;
a2 = a/100%100;
a3 = a/10000;
String[] months = {"Jan", "Feb", "Mac", "Apr", "May", "Jun", "Jly", "Aug", "Sep", "Oct", "Nov", "Dis"};
String month = months[a2 - 1];
System.out.println();
System.out.println("Your name : " + name);
System.out.println("Your IC number : " + a + "-" + b + "-" + c);
System.out.println("Your Birth date : " + a1 + "/" + month + "/" + a3);
if (c % 2 == 0)
System.out.println("Your Gender is : Female");
else
System.out.println("Your Gender is : Male");
}
}
它说“不兼容的类型:可能的有损转换从长到整数”。我的代码中的错误是:-
String month = months[a2 - 1];
您需要将其转换为int
String month = months[(int)a2 - 1];
<code>long</code>比<code>int</code>使用更多的位,因此它可以容纳比<code>int</code>更大的数字。可以说,它有更多的数字。就像你可以用3位数字(0到999)来表示一个比2位(0到99)更大的数字一样,long
与int
相比也是如此,除了数字以2为基数而不是以10为基数。这些数字称为位。
程序员出错的一个常见原因是在需要< code>int的地方使用了< code>long。在某些语言中,编译器会生成将< code>long隐式转换为< code>int的代码。如果幸运的话,您可能会得到一个编译器警告。如果幸运的话,< code>long中的值将适合< code>int中的值,所以程序的逻辑仍然是正确的。如果您运气不好,您截断了< code>long中的一些数字,并且您需要找到并修复一个棘手的错误。
Java的设计目标是简化事情和防止程序员错误。该规范规定不能进行自动转换,将<code>long。相反,规范要求发生编译器错误。
如果您特别确定<code>long。在您的例子中,它可能看起来像<code>字符串month=months[(int)a2-1] 。
我试图为学校编写一些东西,但我不断收到这个编译错误: 错误:不兼容的类型:从int到byte的转换可能有损失 A = (字节)C / (字节)B;
我对这里的代码有疑问: 我不确定究竟是哪个部分导致了以下错误: 不兼容的类型:从整数到字节的可能有损转换 这是程序输出的错误消息:
在尝试绘制图形时,我得到了下面的错误,我的x和y是FLoat类型。 我得到的错误:
为什么当我尝试编译以下代码时会收到此错误消息? 或 不兼容的类型:从double到float的可能有损转换 我溢出来了吗?我想了解这背后的理论。提前感谢。
我正在修改这段代码的过程中,从一个例子从我的教科书,以兼容一个双数组。代码中有几个地方我不确定如何修复错误“不兼容类型:从double到int的转换可能有损” 我确信还有其他简单的错误我还没有找到,因为我还没有机会调试和校对代码,而且我对Java和编程也很陌生。 谢谢你的帮助!
null 谁能解释一下作为一个初学者我该如何消除这个错误。 太感谢你了!