2012-04-10 3 views
0

Я пишу программу java, которая будет подсчитывать число, которое вводит пользователь. Пользователю разрешено вводить число, которое находится между 1-10.Программа, которая будет зацикливаться в условиях оператора

Например:

если пользователь ввел 6 на выходе будет:

1 2 3 4 5 6 

Как я могу это сделать только с использованием операторов и while и if заявления?

Вот мой код. Я мучительно пытался понять, почему мой код не работает. Заранее спасибо!

import java.util.Scanner; 

public class loop_lab { 

    public static void main(String[] args) { 
     System.out.println("Hi user, input any number that is between 1-10");{ 
      Scanner input = new Scanner(System.in); 
      int num1 = input.nextInt(); 
      int num2 = 0; 

      if (1<=num1 && num1>=10); 
      num2=0; 

      while (num2 < num1) 
      System.out.println(""+(num2 + 1)); 
       num2++; 

      } 
      } 
     } 
+0

Я убирала свой вопрос и используется код форматирования на коде. Пожалуйста, используйте последовательный и логический отступ для кодовых блоков. Это облегчает отладку кода, особенно код с использованием циклов. –

+0

Да, жаль, что я все еще пытаюсь использовать эти скобки. – user1323393

+0

Какой редактор кода вы используете? (Я предполагаю, что это IDE, учитывая те комментарии TODO и JavaDoc, которые я удалил как шум.) –

ответ

1

Я думаю, что проблемы связаны с кодовыми блоками (материал между {}). Особенно взгляните на то, как работает while -loop. Что должно быть в цикле, а что нет? Кроме того, ваше if -статье пусто. ; закрывает блок кода, который обрабатывается с помощью if.

IDE может помочь вам обнаружить эти ошибки, применяя синтаксис-форматирование. Комментарии в вашем коде выглядели так, как будто они пришли из Eclipse. Попробуйте ctrl-shift-f (или посмотрите его в меню). Это автоматически форматирует и отступы вашего кода, что облегчает обнаружение ошибок в структуре.

0

Во-первых, ваша условная проверка должна использовать or и брекеты; и назначить 0 для num1, чтобы предотвратить цикл от запуска, если пользователь вводит что-либо за пределами диапазона 1-10:

if (num1 < 1 || num1 > 10){ 
    num1=0; 
} 

И вы также можете улучшить свой цикл:

while (num2 < num1) { 
    System.out.println(""+ num2++); 
} 

Кроме того, как сказал пользователь689893, проверьте свои блоки {}.

+0

Если условие удовлетворяет num1, становится 0, а num2 уже объявлено 0. Итерации не будет. –

+0

@ChandraSekhar, вот в чем смысл - так как это требование только принять вход между 1-10, ничто не должно печататься, если пользователь вводит что-то другое. – Marcelo

+0

Извините, Марсело, вам нужно немного отредактировать свой ансер, чтобы я мог продвинуться. Теперь я не могу этого сделать. –

0

Попробуйте один

import java.util.Scanner; 

public class loop_lab { 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     System.out.println("Hi user, input any number that is between 1-10"); 
     Scanner input = new Scanner(System.in); 
     int num1 = input.nextInt(); 
     int num2 = 1; 

     if (1<=num1 && num1>=10){ 
      num2=1; 

      while (num2 <= num1) 
      { 
       System.out.println("" + num2); 
       num2++; 
      } 
     } 
    } 
} 
+3

Поскольку это помечено как домашнее задание, было бы лучше помочь ассеру решить его проблему, чем фактически решить его для него. – Joost

+3

Его так просто, поскольку у вас слишком много синтаксических ошибок, я просто хотел разобраться с полным кодом. я прав ?? –

+1

@Ramesh Человек, которому вы отвечаете, не тот, кто задал вопрос. Кроме того, я согласен с их советом «намекнуть», а не «код дампа» на домашние задания. –

0

if имеет паразитную задней ; Как результат, следующая строка является всегда бег.

Я делаю это предложение включать даже однострочные утверждения, связанные с условными операторами и циклами внутри {/}. Это помогает сделать начало кода кода &. Мой более ранний комментарий о отступе кода также является фактором, определяющим, где начинается кодовый блок &.

0

в то время как петля просто изменить

while (num2 < num1){ 
     if(num2==0) 
     System.out.println((num2 + 1)); 
     else{ 
      num2++; 
      System.out.println(num2); 

     } 


      } 
+0

Пожалуйста, 1) Дайте советы и объяснения, а не код для домашних заданий. 2) Оставьте лишние пустые строки в коде. 3) Используйте последовательный и логический отступ для кодовых блоков. –

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