为什么while,do-while和for循环不起作用?

时间:2015-07-30 16:47:16

标签: java for-loop while-loop cycle do-while

循环只进行一次迭代。它每次给我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);


    }
}

2 个答案:

答案 0 :(得分:2)

你的for循环需要看起来像这样:

int variable = 0;
while(variable < 10)
{
//10 is the controller here
doSomething();
}

对于两个while循环,您需要确保在循环外声明变量。把while循环想象成for循环。

在for循环中,我们有三个重要元素:初始控制变量,限制器和增量器。

我们在while循环中具有相同的结构。但是,while循环解压缩这些东西。

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;
                     }
             }

编辑:我强烈建议您在编写代码时将其写入Eclipse或IntelliJ等IDE中。不要听老师或其他人告诉你在vi / vim这样的文本编辑器中编写代码的重要性。它是愚蠢的,毫无意义的,不会教你任何东西。如果您使用IDE,您可能会立即发现错误。另外,请确保您了解循环结构的工作原理。

编辑2:以下视图示例是我在工作和娱乐期间编写的/ while循环功能。专业提示,do-while循环在绝大多数情况下完全没有意义。

For Loop Example:

counter = 0;
while(counter < 10)
{
   counter++;
   System.out.println(counter);
}

格式有点关闭

While循环示例:

do {
            saldoAnnuale += (saldo + valoreInteresse); 
            conteggio++;
            System.out.println("Saldo Annuale Prova: " + saldoAnnuale);
    } while (conteggio <= 10);

编辑答案:我看到你确实在外面宣布了你的异见。然而,你的东西只打印一次的原因是因为它不在循环之外**所以你的循环很好,这就是你如何称Saldo Annuale与众不同。如果要在每次迭代时调用,则需要执行以下操作:

echo

答案 1 :(得分:1)

问题不在于循环,它是循环中的内容:

int conteggio = 1;
do {
    saldoAnnuale = (saldo + valoreInteresse); 
    conteggio++;
    } while (conteggio <= 10);

所有这一切都是相同的任务10次。 saldoAnnuale中的结果与您只执行一次的结果完全相同。

目前还不清楚你想做什么,但是如果(例如)你想 saldo + valoreInteresse添加到saldoAnnuale十次,那么你就是&#39;我想要+=

saldoAnnuale += (saldo + valoreInteresse); 
// ----------^

......与以下内容相同:

saldoAnnuale = saldoAnnuale + (saldo + valoreInteresse); 

当然,你根本不能循环使用:

saldoAnnuale = (saldo + valoreInteresse) * 10;