2017-02-21 13 views
0

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

Вот мой код до сих пор,

public static void main(String[] args) 
{ 
    Scanner input = new Scanner(System.in); 


    int z,t; 
    System.out.println("Enter two numbers: "); 
    z = input.nextInt(); 
    t = input.nextInt(); 

    humbala(z,t); 

} 

public static void humbala (int x, int y) 
{ 

    for(int a; x < y; x++) 
    { 
     if(x % 2 !=0) 
     { 
      System.out.print(x+ " "); 

      for (int i=0; i<y; i++) 
      { 
       if(i > 3) 
       { 
       System.out.println(); 
       } 
       i = 0; 

      } 



     } 

    } 

} 

}

мой цикл немного странно. У меня есть переменная счетчика а, но она никогда не использовалась, но все равно работает. дело в том, что если я поставлю x, я получу ошибку, говоря, что это дубликат. Я думаю, я должен создать массив. так что каждый 3-й индекс, я могу распечатать новую линию , но я не могу перевести его в код

+0

Каков ожидаемый выход? –

+0

Как это не бесконечный цикл в вашем внутреннем for-loop? Вам нужно обновить код, который вы опубликовали? – mmcrae

ответ

0

Вам не нужно несколько if условий и в for цикле неиспользуемый variable, если вы просто хотите, чтобы напечатать все число и напечатать новую строку после каждых 3-х цифр, это может быть сделано с counter, например:

public static void main(String[] args) throws IOException { 
    try(Scanner input = new Scanner(System.in);){ 
     int z, t; 
     System.out.println("Enter two numbers: "); 
     z = input.nextInt(); 
     t = input.nextInt(); 
     humbala(z, t); 
    } 
} 

public static void humbala(int x, int y) { 
    int counter = 0; 
    for (int i = x; i <= y; i++) { 
     if(counter++ % 3 == 0){ 
      System.out.println(); 
     } 
     System.out.println(i); 
    } 
} 
0

Если вы используете Java8 вы могли бы сделать что-то вроде этого, чтобы напечатать элементы на одной и той же линии, вы замечаете может использовать ArrayList, но я не уверен, узнал о них:

import java.util.Arrays; 
import java.util.Scanner; 

class Main { 
    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    System.out.print("Enter start number: "); 
    int start = input.nextInt(); 
    System.out.print("Enter end number: "); 
    int end = input.nextInt(); 
    humbala(start, end); 
    } 

    public static void humbala(int start, int end) { 
    int count = 0; 
    String[] numbersLine = new String[3]; 
    for (int i = start; i <= end; i++) { 
     if(count != 0 && count % 3 == 0) { 
     System.out.println(String.join(" ", numbersLine)); 
     Arrays.fill(numbersLine, ""); //for last line 
     } 
     numbersLine[count % 3] = String.valueOf(i); 
     count++; 
    } 
    System.out.println(String.join(" ", numbersLine)); //print any remaining numbers 
    } 
} 

Пример использования:

Enter start number: 1 
Enter end number: 10 
1 2 3 
4 5 6 
7 8 9 
10 

here! Попробуй

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