2016-05-08 4 views
0

ユーザーに3つの番号が与えられています。これらの3つの数値は倍数と範囲を定義します。たとえば、これらの3つの数字が(3,6,17)の場合、プログラムは6,9,12,15を出力します。最初の数字は基本倍数で、2番目と3番目の数字は最も低い数値と最も高い数値(範囲)です。私は、私が持っているすべての輸入陳述書は必要ないとも知っています。javaで指定された変数の倍数を出力するには?

これは私がこれまで行ってきたことですが、どのように続行するかはわかりません。

import java.util.*; 
import java.io.*; 
import java.text.*; 
import java.lang.Math.*; 

public class printMultiplesOf{ 
    public static void main (String [] args){ 

     Scanner reader = new Scanner(System.in); 
     int num1, num2, num3; 

     System.out.println("Enter the 1st number"); 
     num1 = reader.nextInt(); 

     System.out.println("Enter the 2nd number"); 
     num2 = reader.nextInt(); 

     System.out.println("Enter the 3rd number"); 
     num3 = reader.nextInt(); 

     printMultiplesOf(num1, num2, num3); 
    } 

    public static void printMultiplesOf(int num1, int num2, int num3){ 
     int start = num2 
     int end = num3 
     for (int i = num1; i <= num1; i++){ 
      System.out.println(i + " "); 
     } 
    } 
} 
+3

for(int i = num1; i <= num1; '< - これをもう一度読んでください – Tunaki

+0

これは完璧に動作します。どうもありがとうございました! – Ricool55555

答えて

0

ここでの主な問題は、ループの開始点と終了点を見つけることです。開始点は、以上のnum1で割り切れる最初の数にする必要があります。浮動小数点除算を使用してnum2/num1を除算すると、ceilの結果が得られ、これにnum1を掛けて返します。同様に、ループの終了点は、num1で割り切れる最大の数値で、num3以下である必要があります。あなたは効果的に結果をfloor、その後num1によって再び戻ってそれを掛けることになる整数の除算を(使用してnum3/num1を分割することによってそれを見つけることができますそこから、それは段階的にnum1の大きさをループの問題だたとえば:。。

public static void printMultiplesOf(int num1, int num2, int num3) { 
    int start = ((int) Math.ceil((double) num2/num1)) * num1; 
    int end = (num3/num1) * num1; 

    for (int i = start; i <= end; i+= num1) { 
     System.out.println (i + " "); 
    } 
} 
範囲内のすべての数字による
1

ループ、そしてそれは、複数のだかどうかを確認します。

public static void printMultiplesOf(int num1, int num2, int num3) { 

     for(int i=num2; i<= num3; i++){ 
      if(i % num1 == 0) 
       System.out.print(i +" "); 
     } 

    } 
0

これはあなたの関数である。あなたは単に私にループが実行されるたびに、あなたのNUM1を追加します。 私はそれを試してみましたが、それがあります働く;)

public static void printMultiplesOf(int num1, int num2, int num3){ 
      int multi = num1; 
      int start = num2; 
      int end = num3; 

      for (int i = start; i <= end; i += multi){ 
       System.out.println(i + " "); 
      } 
    } 
関連する問題