我是java和编程的新手。我对这个概念有所了解,但并不完全确定。此问题使用扫描仪从另一个文件中读取,以获取有关产生的能量的信息。
@ECHO OFF
SET "Parent=%USERPROFILE%\Videos"
IF /I NOT "%CD%\"=="%~dp0" PUSHD "%~dp0"
SETLOCAL ENABLEDELAYEDEXPANSION
IF /I NOT "!CD:%Parent%=!"=="%CD%" EXIT/B
SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F "TOKENS=1,3*" %%A IN ('WHERE/T /R "%Parent%" *.mp4'
) DO IF %%A GTR 1000000000 COPY "%%C"
和这个“错误:不兼容的类型:可能有损转换从double到int systemsCost =(savingsWeek * energy);“
我做错了什么,不太确定。
修改 所以我让程序工作,但在程序中只生成.txt文件中的一组答案,但文件有更多的数字,我不知道要添加什么来让它读取下一行。
import java.util.Scanner;
import java.io.File;
public class HJUnit3
{
public static void main(String[] args) throws Exception
{
// Scanner stdIn = new Scanner(System.in);
Scanner stdIn = new Scanner(new File("energyProduced.txt"));
stdIn.nextLine();
double energy;
energy = stdIn.nextLine();
int systemsCost; //Total Systems Cost
double ttlEnergy; //Total energy produced in a week
double savingsWeek; //Total savings for one week
double savingsDay; //Total savings for one day
double recoupDay; //Days to recoup
double recoupYear; //Years to recoup
final double electricCost = 0.085;
systemsCost = (savingsWeek * energy);
System.out.println("Total System Cost = $" + systemsCost );
System.out.println("Total Energy Produced in one week" + (energy * 7) + "Kwh");
savingsWeek = (ttlEnergy * electricCost);
System.out.println("Total Savings for one week =" + savingsWeek);
savingsDay = (savingsWeek / 7);
System.out.println("Total Savings for one day =" + savingsDay);
recoupDay = (systemsCost / savingsDay);
System.out.println("Days to recoup cost(truncated)" + recoupDay);
recoupYear = (recoupDay / 365);
System.out.println("Years to recoup cost(truncated)");
} // end main
} // end HJUnit3 class
.txt文件就像一串列的数字
答案 0 :(得分:2)
编译器说String
无法转换为Double
。那就是问题所在。您说的是double energy = stdIn.nextLine()
,但Scanner#nextLine()
会返回String
。相反,您要么将其转换为Double
(Double.parseDouble(String)
),要么致电stdIn.nextDouble()
。 http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
答案 1 :(得分:0)
您可能需要了解"数据类型"技巧,因为Java是一种强类型语言: - )。
错误
error: incompatible types: String cannot be converted to double energy = stdIn.next();
表示stdIn.next()返回的值的数据类型为" string",它与变量" energy"的数据类型不匹配,因为"能量"不是一个字符串。这是一个" double"。
使用
将stdIn.next()返回的值转换为doubleenergy = Double.parseDouble(stdIn.next());
请注意,当字符串等stdIn.next()字符返回时,这会抛出异常。
对于第二个错误,为什么要将systemsCost变量设为整数?你想要它总是一个圆形数字?如果是这样,那么你需要对表达式的结果进行舍入" savingsWeek * energy"到最近的整数,然后将其转换为整数。另一方面,如果您不一定希望systemsCost为整数,只需将其声明为double。