我是新來的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類型的變量,該變量沒有任何小數部分並且具有更有限的值範圍。這也是不可能的,至少不是沒有通知編譯器,你明白你在做什麼,並接受失去精度。現在,花時間思考你必須做的事情。 –