2016-11-12 60 views
1

所以只是作爲一個思想的鍛鍊,我一直想編寫一個非常簡單的計算器,可以執行諸如加法,減法,乘法,除法和權力(並最終根)通過使用for循環和嵌套for循環來增加或減少1。思想運動基礎上加上或減去一個內循環

然而,我需要幫助與電源功能(在下面的代碼中的最後一種方法)。由於乘法需要一個嵌套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); 

} 


} 

回答

0

你可以這樣做。這更加模塊化,但是如果你想在一個完整的循環中使用,你可以將multiply函數中的代碼放入power函數中。

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

感謝您的答覆,但我不知道是否有一種方法只是通過使用嵌套的for循環來做到這一點?到目前爲止,我發現基於當前代碼的是,嵌套循環的數量等於指數。例如,4^4需要4個for循環(其中三個嵌套)。當然有更簡單的方法來做到這一點? –

+0

我組合它使用嵌套循環。那是你在找什麼? – cullan

+0

太棒了!這是完美的。你介意看我的代碼,並解釋我出錯的地方,如果可以的話?再次感謝你的幫助! –