基于循环内加减一的计算器思维练习

Posted

技术标签:

【中文标题】基于循环内加减一的计算器思维练习【英文标题】:Thought exercise on calculator based on adding or subtracting one within loops 【发布时间】:2016-11-12 06:02:34 【问题描述】:

因此,作为一个思考练习,我一直在尝试编写一个非常简单的计算器,它可以通过使用加减 1 来执行加法、减法、乘法、除法和幂(最终是根)等功能for 循环和嵌套 for 循环。

但是我需要关于 power 函数的帮助(下面代码中的最后一个方法)。由于乘法需要一个嵌套的 for 循环(如下所示的第三种方法),我认为幂函数只会再深一两层。但要么不是这种情况,要么我没有正确编码,我认为这两者中更有可能。

import java.util.*;

public class Main 

public static Scanner scan = new Scanner(System.in);


public static void main(String[] args) 
    Power();




public static void addition() 

    System.out.println("Type first number to add: ");
    int num1 = scan.nextInt();
    System.out.println("Type second number to add");
    int num2 = scan.nextInt();
    int result = num1;
    while(num2 > 0)
        num2--;
        result++;
    

    System.out.println("The result is: " + result);



public static void subtraction() 

    System.out.println("Type first number to subtract: ");
    int num1 = scan.nextInt();
    System.out.println("Type second number to subtract: ");
    int num2 = scan.nextInt();
    int result = num1;
    while(num2 > 0)
        num2--;
        result--;
    

    System.out.println("The result is: " + result);



public static void multiplication() 

    System.out.println("Type first number to multiply: ");
    int num1 = scan.nextInt();
    System.out.println("Type second number to multiply: ");
    int num2 = scan.nextInt();
    int result = 0;


    for(int i = num1;i>0;i--)
        for(int x = num2;x>0;x--)
            result++;
        

    

    System.out.println("The result is: " + result);



public static void division() 

    System.out.println("Type first number to divide: ");
    int num1 = scan.nextInt();
    System.out.println("Type second number to divide: ");
    int num2 = scan.nextInt();
    int result = 0;

    for(;num2>0 && num1 > num2;num2--)
        result++;
        for(;num1 > num2;num1--)

        
    

    System.out.println("The result is: " + result);



public static void Power() 

System.out.println("Type Base Number: ");
int num1 = scan.nextInt();
System.out.println("Type Exponent: ");
int num2 = scan.nextInt();
int result = 0;

for(int i = num1;i>0;i--)
    for(int x = num1;x>0;x--)
        for(int y = num2; y>0; y--)
            for(int z = num2; z>0;z--)
                result++;
            
        
    





System.out.println("The result is: " + result);





【问题讨论】:

【参考方案1】:

你可以做这样的事情。这有点模块化,但如果您希望它在一个完整的循环中,您可以将乘法函数中的代码放入幂函数中。

public int mulitply(int x, int y) 
    int product = 0;
    for (int i = 0; i < y; i++) 
       for (int j = 0; j < x; j++) 
          product++;
       
    
    return product;


public int power(int x, int exponent) 
    int result = 1;
    for (int i = 0; i < exponent; i++) 
        result = multiply(result, x);
    
    return result;

综合:

public int power(int x, int exponent) 
    int result = 1;
    for (int i = 0; i < exponent; i++)             
        int product = 0;
        for (int j = 0; j < x; j++) 
            for (int k = 0; k < result; k++) 
                product++;
            
        
        result = product;
    
    return result;

【讨论】:

感谢您的回复,但我想知道是否有办法仅通过使用嵌套的 for 循环来做到这一点?到目前为止,根据我当前的代码,我发现嵌套循环的数量需要等于指数。例如,4^4 需要 4 个 for 循环(其中三个是嵌套的)。当然有更简单的方法可以做到这一点吗? 我将它结合起来使用嵌套循环。这就是你要找的东西吗? 太棒了!这完美无缺。如果可以的话,你介意看看我的代码并解释我哪里出错了吗?再次感谢您的帮助! 没问题!查看您的代码,总共有 4 个循环。外部两个循环从 num1 到 0,也就是每个循环 num1 次,然后内部两个循环从 num2 到 0,也就是每个循环 num2 次,因此它迭代 num1*num1 + num2*num2 次,即 (a^2 + b^2),这不是你想要的结果!

以上是关于基于循环内加减一的计算器思维练习的主要内容,如果未能解决你的问题,请参考以下文章

Java写一个简单的计算器,能计算加减乘除,接收用户输入并能够循环接收数据

Python基础-----while循环练习

计算机组成原理练习题——机器码与加减运算

01课堂练习

随机整数加减法练习

随机整数加减法练习