2015-08-01 1 views
0

Я только начал с циклов сегодня, и сейчас я борюсь с кодом. Я должен попросить пользователя ввести начальное и конечное значение цикла while. Результаты должны отображать все кратные 4 между начальным и конечным значениями. Это домашняя работа, поэтому необходимо включить цикл while.Исправление проблем с циклом «Пока»

Например, пользователь вводит 1 для стартового значения и 4 для конечного значения. Код должен отображать 4 * значения между начальным и конечным значением). Я не знаю, как сделать число между многократно с 4

import javax.swing.JOptionPane; 

public class WhileEx { 

public static void main(String[] args){ 

int start = Integer.parseInt(JOptionPane.showInputDialog("Enter a starting number (integer)")); 
int end = Integer.parseInt(JOptionPane.showInputDialog("Enter an ending number (integer)"));   

while (start < end) 
{ 
    start = start * 4; 
    System.out.print (start + " ");  
} 
} 
} 
+2

Не могли бы Вы более конкретно с тем, что вы пробовали и то, что и не работает? – IKavanagh

+0

Не могли бы вы предоставить * некоторые тесты *, например. то, что является желаемым поведением для 'start == 1; end == 5', 'start == 1; end == 16', 'start = -1; end = 0'? –

+0

он отлично работает :-) – Kachna

ответ

3

Я дам вам две подсказки:

  1. Что является первым кратен 4, который больше или равна start? Ваша программа должна работать для случаев, когда start уже кратно 4 (скажем, 32), а когда нет (например, 29).

  2. Как вы получаете от нескольких кратных от 4 (скажем, 32) до следующего (36)?

Если вместо этого, вы должны

дисплей 4 * значения в между начальным и конечным значением

самым простым решением является то:

while (start <= end) 
{ 
    System.out.print((start * 4) + " "); 
    start = start + 1; 
} 
+1

еще одно: что если 'start' * отрицательный *? что, если' start' is * zero *? –

+0

Спасибо за помощь! Это на самом деле очень просто, я не могу поверить, что не понял это – Amber

0

Для этого вам понадобится %, который возвращает отдых после деления.

Так вы можете это сделать, есть решение с простым для цикла, а затем с циклом.

public static void main(String[] args) { 
    int start = Integer.parseInt(JOptionPane.showInputDialog("Enter a starting number (integer)")); 
    int end = Integer.parseInt(JOptionPane.showInputDialog("Enter an ending number (integer)")); 

    for (int i = start; i < end; i++) { 
     if (i % 4 == 0){ 
      System.out.print(i + " "); 
     } 
    } 

    System.out.println(""); 

    int i = start + (4 - (start % 4)); 
    while (i < end){ 
     System.out.print(i + " "); 
     i += 4; 
    } 
} 

Выход для значений 2 и 63:

4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 
4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 
0

Я предложил бы использовать мод оператора ->% Это даст вам остаток и если это 0 - вы получили кратно 4.

Пример:

if(start%4 == 0){ 
System.out.print (start); 
} 
start++; 
0

Поскольку вы обновляете start Валу e до значения 4xtimes, в следующей итерации цикла while это новое значение будет проверено, что неверно. Не обновляйте ту же переменную, которая используется в состоянии while. Используйте другую переменную для умножения на 4, а затем используйте ее для отображения.

Edit: Вы должны использовать оператор инкремента ++ увеличить значение start для достижения end.

Кроме того, ваш цикл в то время как должно быть так:

int temp=0; 
while (start < end) 
{ 
temp = start * 4; 
System.out.print (temp + " ");  
start++; 
} 

еще лучше:

while (start < end) 
{ 
System.out.print ((start * 4) + " ");  
start++; 
} 

@kittykittybangbang: Спасибо за предложение редактирования.

+0

Спасибо за ваш ответ! Наряду с вашими объяснениями, пожалуйста, предоставьте код (наш псевдокод), чтобы лучше ответить на вопрос. – kittykittybangbang

0

import javax.swing.JOptionPane; 

    public class WhileEx { 

    public static void main(String[] args){ 

    int start = Integer.parseInt(JOptionPane.showInputDialog("Enter a  starting number (integer)")); 
    int end = Integer.parseInt(JOptionPane.showInputDialog("Enter an ending number (integer)")); 
    if(start==0 || start%4>0) 
    { 
     start = start +(4-start%4); 
    } 
    while (start <= end) 
    { 
     System.out.print (start + " ");  
     start = start + 4; 

    } 
    } 
    } 

Смежные вопросы