我是Java的初学者,我已经编写了这段代码。当我尝试运行它时,它不断显示错误,例如:
有人能解释一下我作为一个初学者应该如何解决这个问题吗。
public class JavaJoeWeek{
public static void main (String[] args){
int x = 1;
int Money = 200;
int Twenty, Ten, Toonie, Loonie, Quarter, Dime, Nickel = 0;
while (x < 8){
System.out.println("Today is day " + x + " of the week");
if (x == 1) {
int Cost = 30;
int TotalCost = Cost * 1.15;
System.out.println("The cost of the shoes is $" + TotalCost);
Money = Money - TotalCost;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 2) {
int CeilingArea = 12 * 7;
System.out.println("The area of the celing is " + CeilingArea + " square meters");
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 3) {
int PaintCost = CeilingArea * 1.13;
System.out.println("The paint cost $" + PaintCost);
Money = Money - PaintCost;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 4) {
int Gas = 36.40 / 0.45;
System.out.println("Java Joe filled up his tank with " + Gas + " liters of gas");
Money = Money - Gas;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 5) {
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 6) {
Money = Money - 23;
System.out.println("The remaining budget is $" + Money );
}
else{
System.out.println();
}
if (x == 7) {
if (Money > 20) {
Money = Money - 20;
Twenty = Twenty + 1;
}
else{
System.out.println("Java Joe has " + Twenty + " twenty dollar bills");
}
if (Money > 10) {
Money = Money - 10;
Ten = Ten + 1;
}
else{
System.out.println("Java Joe has " + Ten + " ten dollar bills");
}
if (Money > 2) {
Money = Money - 2;
Toonie = Toonie + 1;
}
else{
System.out.println("Java Joe has " + Toonie + " toonies");
}
if (Money > 20) {
Money = Money - 20;
Loonie = Loonie + 1;
}
else{
System.out.println("Java Joe has " + Loonie + " loonies");
}
if (Money > 0.25) {
Money = Money - 0.25;
Quarter = Quarter + 1;
}
else{
System.out.println("Java Joe has " + Quarter + " quarters");
}
if (Money > 0.1) {
Money = Money - 0.1;
Dime = Dime + 1;
}
else{
System.out.println("Java Joe has " + Dime + " dimes");
}
if (Money > 0.05) {
Money = Money - 0.05;
Nickel = Nickel + 1;
}
else{
System.out.println("Java Joe has " + Nickel + " nickels");
}
System.out.println("There is $" + Money + " left after the change" );
}
else{
System.out.println();
}
x = x + 1;
}
}
}
太谢谢你了!
这些编译错误发生在代码中的特定节点上;您的编辑器将使用红色波浪下划线突出显示这些内容。如果你没有智能编辑器,强烈建议考虑买一个(我推荐Eclipse或Intellij);但即便如此,javac 也会打印相关行,然后打印一行带有 ^
符号的行,指向行的确切部分。
这就是问题所在。然后只是..读取错误,将其应用于错误指向的节点。
例如,不兼容的类型:从double到int的可能有损转换
的含义如下:您正在获取一个double,这可能会导致信息丢失。
int
是大约负和正 20 亿之间的整数。双精度
有一个小数部分。因此,如果成本
为 3,则 3 * 1.15 为 3.45
,并且..
现在怎么办?总成本
不能为 3.45
(它是一个整数;它只能是 3 或 4)。
您可以通过告诉编译器您希望它做什么来解决此问题。例如,
int TotalCost = (int) (Cost * 1.15);
是问编译器: 请明确地将此双精度转换为 int,然后 java 语言规范声明此特定策略将删除小数位(因此,如果为正,则向下舍入,如果为负,则向上舍入)。
下一个错误涉及“找不到符号”。您正在使用一个符号(即标识符或引用代码中其他内容的某个其他单词),而编译器不知道您在说什么。
例如,
int Paint成本=Ceiling面积*1.13
中的Ceiling面积
在那里不是一个已知的符号。看起来很奇怪,对吧?Ceiling面积
就在你的代码中,大约6行。但是,错误并没有骗你,所以你会做一些研究,或者只是想一想。
在java中,变量不存在于最近的括号({})之外。关闭
if(x==2)
块的括号也意味着您在其中声明的Ceiling领域
变量不再存在。这是合乎逻辑的;如果x不是
2呢?事实上,如果编译了代码,奇怪的事情会发生:Ceiling领域
甚至会是什么?不是
12*7; x不是2,该行没有运行。因此,java不允许
CeilingLine'存在于最近的括号之外的想法是有内在意义的。
为了解决这个问题,嗯,你的代码不清楚,所以你需要考虑这意味着什么。例如,如果你想让
Ceiling面积
在括号之外生存,请在括号之外声明它(就像你对Money
变量所做的那样)。
调试器是指编译良好但未按预期方式执行的操作的代码。修复编译器错误不是“调试”。因此,调试工具(如调试器)不适用。没有简单的解决办法;学习 Java,以便了解编译器错误。这至少需要几周/几个月/几年的时间,它对我来说确实:)
null 谁能解释一下作为一个初学者我该如何消除这个错误。 太感谢你了!
我正在修改这段代码的过程中,从一个例子从我的教科书,以兼容一个双数组。代码中有几个地方我不确定如何修复错误“不兼容类型:从double到int的转换可能有损” 我确信还有其他简单的错误我还没有找到,因为我还没有机会调试和校对代码,而且我对Java和编程也很陌生。 谢谢你的帮助!
我一直在运行此代码并不断收到错误,不知道为什么。双倍漂浮?继续收到消息“错误:不兼容的类型:可能的有损转换从双精度到浮点型。转换如何转换是否有任何问题,因此没有错误 这是较大代码的一部分。
我是Java语言的初学者,我遇到的问题是“不兼容类型:从double到int的转换可能有损”。我能做什么来解决这个问题?我完全失去了它。
我得到这个错误的一个小箭头指向十进制整数。允许小数吗?我要写些什么才能让小数被接受?这是我的代码:
我在第18行遇到了这个错误。我不知道为什么当数组grade和变量gradeNum都是double类型时,编译器要我将变量gradeNum强制转换为int类型。免责声明:此代码远未完成。我唯一的问题是这个错误与数组grade和变量gradeNum有关。