2014-12-18 55 views
-2

我想寫一個代碼,打印範圍從2到最小的兩個數字。例如: 例如: 讓我說我輸入兩個數字 - 3和6 我需要它打印它像這樣:3 4 5 6 現在我的問題是,如果我輸入像6和3兩個數字 比我有問題與第一次迭代,因爲當我輸入3和6它完成循環,並轉到下一個......我不想這樣,我想他結束程序,如果第一次迭代是真的。如果第一次迭代(for)爲真,我該如何跳過第二次迭代? [java]

的代碼:

import java.util.Scanner; 
public class ForClass 
{ 
    public static void main(String[]args) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Please enter two numbers"); 
     int num1, num2; 
     num1 = scan.nextInt(); 
     num2 = scan.nextInt(); 

     for(;num1<=num2;num1++){ 
       System.out.print(num1); 

      } 

     for(;num2<=num1;num2++){ 
        System.out.print(num2);     
     } 
    } 
} 

測試: 3和6 轉到第一個for循環,運行它,然後進入第二個用於 然後打印,這就是錯了我想要它打印並結束程序。

***我應該指出,我必須使用for循環。

+0

'return'將停止執行當前函數。 – vikingmaster

+0

迭代是循環的一次。這不是真的或假的。你真的在問什麼? – rakslice

回答

-1

任何時候你想要你打破循環,break;會幫助你!

for(int i = 0; i < 20; i++) { 
    if(i == 10) break; 
} 

這會打破循環一次,我打10

+0

我通常覺得應該注意/註釋它破壞了代碼流,儘管 – Bono

3

你可以使用一個布爾值且僅當它是真的執行第二個for循環...

boolean executed = false; 

for (/* code here */) { 
    executed = true; 
    /* code here */ 
} 

if (!executed) { 
    for (/* code here */) { 
     /* code here */ 
    }  
} 

然而,你的情況更好的辦法是找出哪些數字更小:

int smaller, bigger; 
if (num1 > num2) { 
    smaller = num2; 
    bigger = num1; 
} else { /* may want to do something different if they are equal */ 
    bigger = num2; 
    smaller = num1; 
} 

然後,你只需要一個循環,你只需要使用biggersmaller即可。

+2

'smaller = Math.min(num1,num2);更大= Math.max(num1,num2);' – Tom

+0

絕對是一個更好的方式來做上面的代碼片段;我只是想盡可能保持基本。 – Toby

+0

這樣做並沒有什麼壞處。特別是通過顯示「if/else」塊的目的:)。 – Tom

1

你的for循環是兩個執行。他們都在工作。你的結果是3,4,5,6(現在num1 = 7,這不是< = 6)和6,7所以if語句選擇正確的循環應該可以解決你的問題。類似於

if (num1 < num2) { 
    //loop 1 
} 
else //loop 2 
1

試試這樣; 一個for循環;

public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Please enter two numbers"); 
     int num1, num2; 
     num1 = scan.nextInt(); 
     num2 = scan.nextInt(); 
     int start, end; 
     if (num1 > num2) { 
      start = num2; 
      end = num1; 
     } else { 
      start = num1; 
      end = num2; 
     } 
     for (int i = start; i <= end; i++) { 
      System.out.print(i); 
     } 
    } 
1

在您的第一個for循環之前放置此代碼。

if(num2 < num1){ 
    int temp = num1; 
    num1 = num2; 
    num2 = temp; 
} 

然後擦除你的第二個循環。這種僅用一個臨時變量交換兩個變量的方式對學習很有用。

相關問題