问题描述
Loop 只进行一次迭代。 它每次都给我 105.0,而且它应该做更多的迭代而不是单次迭代。 另外,我需要写更多的细节,因为“我的帖子主要是代码”,但我不能说其他任何东西,因为我想还有什么要说的。
import java.util.Scanner;
public class Esercizio {
public static void main(String[] args) {
int giorniDieciAnni, mesiDieciAnni, anniDieciAnni;
giorniDieciAnni = 365*10;
mesiDieciAnni = 12*10;
anniDieciAnni = 10;
System.out.println("");
System.out.println("Interessatoio!");
System.out.println("");
System.out.println("Scrivi un saldo, un interesse, e calcolero':");
System.out.println("");
System.out.println("Interesse annuale: una volta l'anno, per 10 anni.");
System.out.println("Interesse mensile: una volta al mese, per 10 anni.");
System.out.println("Interesse giornaliero: una volta al giorno per 10 anni.");
System.out.println("");
System.out.println("Scrivi un importo per il saldo: massimo due cifre decimali.");
System.out.println("");
Scanner tastiera = new Scanner(System.in);
double saldo, interesse, saldoAnnuale = 0, valoreInteresse = 0;
saldo = tastiera.nextDouble();
System.out.println("");
System.out.println("Inserire ora un tasso di interesse: massimo due cifre decimali.");
System.out.println("");
interesse = tastiera.nextDouble();
valoreInteresse = ((saldo/100)*interesse);
int conteggio = 1;
do {
saldoAnnuale = (saldo + valoreInteresse);
conteggio++;
} while (conteggio <= 10);
System.out.println("Saldo Annuale Prova: " + saldoAnnuale);
}
}
1楼
您的 for 循环需要如下所示:
for (int count = 0; count <= 10; count++) {
doSomething; }
至于你的两个 while 循环,你需要确保你在循环之外声明了一个变量。 将 while 循环视为 for 循环。
在 for 循环中,我们有三个重要元素:初始控制变量、限制器和增量器。
我们在 while 循环中有相同的结构。 然而,while 循环会解包这些东西。
int variable = 0;
while(variable < 10)
{
//10 is the controller here
doSomething();
}
编辑:我强烈建议您在编写代码时将其编写在 IDE 中,例如 Eclipse 或 IntelliJ。 不要听老师或其他人告诉你在像 vi/vim 这样的文本编辑器中编写代码是多么重要的事情。 这是愚蠢的,毫无意义的,不会教你任何东西。 如果您使用 IDE,您会立即发现错误。 此外,请确保您了解循环结构的工作原理。
编辑 2:以下视图示例是我在工作和娱乐期间编写的功能性 for/while 循环。 专业提示,do-while 循环在绝大多数情况下完全没有意义。
For 循环示例:
for(int j = 0; j < 5; j++)
{
//TODO: CREATE PROPER LOGIC GATES HERE
if(rows.get(j).getAttribute("name").contains("P") && currentTime.contains("P"))
{
logger.info("Both times are still PM.");
assert Integer.parseInt(rows.get(j).getAttribute("name").substring(0, 2).trim()) > currentTimeInt;
}
else if(rows.get(j).getAttribute("name").contains("A") && currentTime.contains("P"))
{
logger.info("Time at index " + j + " is now AM compared to our current PM time which is: " + parseRows.get(3).getAttribute("name"));
assert true;
}
}
格式化有点不对
While 循环示例:
counter = 0;
while(counter < 10)
{
counter++;
System.out.println(counter);
}
编辑答案:我看到您确实在外面声明了您的 conteggio。 然而,你的东西只打印一次的原因是因为L ** 它在循环之外** 所以你的循环很好,这就是你对 Saldo Annuale 的称呼不同。 如果你想在每次迭代时被调用,那么你需要执行以下操作:
do {
saldoAnnuale += (saldo + valoreInteresse);
conteggio++;
System.out.println("Saldo Annuale Prova: " + saldoAnnuale);
} while (conteggio <= 10);
2楼
问题不在于循环,而在于循环内部的内容:
int conteggio = 1;
do {
saldoAnnuale = (saldo + valoreInteresse);
conteggio++;
} while (conteggio <= 10);
所做的只是相同的任务 10 次。
saldoAnnuale
的结果正是您只执行一次时的结果。
目前还不清楚你想做什么,但如果(例如)你想将saldo + valoreInteresse
添加到saldoAnnuale
十次,你会想要+=
:
saldoAnnuale += (saldo + valoreInteresse);
// ----------^
...与以下内容相同:
saldoAnnuale = saldoAnnuale + (saldo + valoreInteresse);
当然,您可以根本不循环并使用:
saldoAnnuale = (saldo + valoreInteresse) * 10;