2015-05-29 2 views
1

Я очень новичок в Java и пытаюсь написать простой код. Вот описание: Напишите программу, которая запрашивает у пользователя число X. Распечатайте цифры от 1 до X. Однако вместо кратных 4 печати «qqqq». Вместо кратных 7 напечатайте «семь». Если число делится на 4 и 7, напечатайте «qqqqseven». Это означает, что если я ввожу 4, мой вывод должен быть 1, 2, 3, (qqqq), ... но я получаю 1 (qqqq), 2 (qqqq), 3 (qqqq), 4 (qqqq) .... Может ли кто-нибудь помочь мне и сообщить, где я делаю неправильно? Любая помощь приветствуется. Чем ты.Почему я получаю неправильный вывод?

public static void main(String args[]) 
{ 

    //Print Method 
    System.out.println("Enter number upto which you want to print: "); 
    Scanner input = new Scanner(System.in); 
     int x; 
     x = input.nextInt(); 


    for(int i=1; i <= x; i++) 
    { 
     System.out.println(i); 

    //if x is multiples of 4 
    if (x % 4 == 0) 
      System.out.println("qqqq"); 
    //if x is multiples of 7 
    if (x % 7 == 0) 
      System.out.println("seven"); 
    //if x is divisible by 4 and 7 
    if (x % 4 == 0 && x % 7 == 0) 
      System.out.println("qqqqseven"); 

    } 
} 

}

ответ

1

Идея здесь заключается в том, чтобы использовать условие if от наиболее специфического к наименее конкретному. В вашем случае наиболее конкретным условием является делитель 4 и 7, за которым следует делитель 4, делитель fo 7 и, наконец, наименее специфический, что означает все остальное. Если вы можете направить свои условия в том порядке, вы получите результат.

Примечание. Рекомендуется закрыть сканер или любые открытые вами ресурсы. :)

import java.util.Scanner; 

public class TestProgram { 

    public static void main(String[] args) { 
     System.out.println("Enter number upto which you want to print: "); 
     Scanner input = new Scanner(System.in); 
     int x; 
     x = input.nextInt(); 

     for (int i = 1; i <= x; i++) { 
      if(i%4 == 0 && i%7 == 0) { 
       System.out.println("qqqqseven"); 
      } else if(i%4 == 0) { 
       System.out.println("qqqq"); 
      } else if(i%7 == 0){ 
       System.out.println("seven"); 
      } else { 
       System.out.println(i); 
      } 
     } 
     input.close(); 
    } 
} 
+0

Большое спасибо за ваше объяснение !!! Теперь я понимаю это лучше. И ЭТО РАБОТАЕТ !!! – Hr0419

3

Заменить

if (x % 4 == 0) 

С

if (i % 4 == 0) 

ли также для других вхождений%

Чтобы получить правильный выход для кратному 28 вы Виль Мне нужно изменить код:

if (i % 4 == 0 && i % 7 == 0) { // if i is a multiple of 28 (of both 4 & 7) 
    System.out.println("qqqqseven"); 
} 
else { 
    if (i % 4 == 0) { // if i is multiples of 4 
     System.out.println("qqqq"); 
    } 
    else if (i % 7 == 0) { // if i is multiples of 7 
     System.out.println("seven"); 
    } 
} 
+0

Благодарим за отзыв. Я внес изменения и теперь, мой выход 1, 2, 3, 4, qqqq, 5, 6, 7, семь .... Как я могу заменить qqqq и семь на 4 и 7? Я пытаюсь учиться, поэтому, если вы дадите мне подсказку, я действительно ценю это. – Hr0419

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