我是新来的java和编程。我对这个概念有所了解,但并不完全确定。此问题使用扫描仪从另一个文件中读取,以获取有关所产生能量的信息。如何让扫描仪读取下一行数字?
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();
\t \t double energy;
\t \t 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
and this“error:incompatible types:possible from infinite conversion from double to 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.nextDouble();
\t \t double energy;
\t \t energy = stdIn.nextDouble();
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;
//
ttlEnergy = (energy * 7);
savingsWeek = (ttlEnergy * electricCost);
savingsDay = (savingsWeek/7);
systemsCost = (int) (savingsWeek * energy);
recoupDay = (systemsCost/savingsDay);
recoupYear = (recoupDay/365);
\t
\t System.out.println("Total System Cost = $" + systemsCost);
\t System.out.println("Total Energy Produced in one week" + (ttlEnergy) + "Kwh");
System.out.println("Total Savings for one week =" + savingsWeek);
System.out.println("Total Savings for one day =" + savingsDay);
System.out.println("Days to recoup cost(truncated)" + recoupDay);
System.out.println("Years to recoup cost(truncated)" + recoupYear);
} // end main
} // end HJUnit3 class
.txt文件就像是一堆数字下降一列
Java不能神奇地为你转换类型。如果你想把'String'变成'Double',可以使用'Double.parseDouble()'。 – azurefrog
@azurefrog:或直接使用'stdIn.nextDouble()' – Marvin
stdIn.next()返回一个String。你试图把它分配给一个double类型的变量。这是不可能的,因为一个字符串不是双重的。这是第一个错误信息的含义。第二种意思是你试图将一个具有小数部分并且可能非常大的double赋值给一个int类型的变量,该变量没有任何小数部分并且具有更有限的值范围。这也是不可能的,至少不是没有通知编译器,你明白你在做什么,并接受失去精度。现在,花时间思考你必须做的事情。 –