2015-09-25 1 views
0

Привет, вот моя проблема: я не могу правильно напечатать выходные данные, я думаю, что у меня есть логическая ошибка в моем коде, она не печатается, когда я помещаю восходящее число, а затем спускаюсь. Я тоже новичок в программировании. Код:По возрастанию и по убыванию Java

import java.util.Scanner; 
    public class tester { 
     public static void main(String[] args) { 
      int n, i, k, j; 
      int asc = 0, 
      Scanner x = new Scanner(System.in); 

      do { 

       System.out.print("How many numbers to process : "); 
       k = x.nextInt(); 

       if(k<=1) { 
        System.out.println("Enter a number greater than 1"); 
       } 
      } while(k<=1); 

      System.out.printf("Please enter %d numbers: ",k); 
      n = x.nextInt(); 

      for(i=0; i<n-1; i++) { 
       j = x.nextInt(); 
       if(j < n) { 
        asc++;    // is this right? 
       } else { 
        asc--; 
       } 
      } 
      if (asc==k) { 
       System.out.print("Not Growing Up."); 
      } 
      if (asc!=k) { 
       System.out.print("Growing Up."); 
      } 
     } 
    } 

Вот выходы

Example outputs (what i'm trying to get) 
How many numbers to process : 4 
Please enter 4 numbers : 1 2 3 4 
Growing up. 

How many numbers to process : 4 
Please enter 4 numbers : 4 3 2 1 
Not Growing up. 

Это моя проблема:

How many numbers to process : 4 
Please enter 4 numbers : 1 2 1 3 
Growing up.   // it should be not growing up. 

ответ

1

Там нет необходимости перебирать все числа. Вы можете просто проверить, если предыдущий номер ниже (если растет). Если нет, напечатайте и верните. Проверьте мой пример кода.

Заменить

n = x.nextInt(); 
for (i=0; i<n-1; i++) { 
    j = x.nextInt(); 
    if(j < n) { 
     asc++;    // is this right? 
    } else { 
     asc--; 
    } 
} 
if (asc==k) { 
    System.out.print("Not Growing Up."); 
} 
if (asc!=k) { 
    System.out.print("Growing Up."); 
} 

С

int prev = x.nextInt(); 
for (i=0; i<k-1; i++) { 
    j = x.nextInt(); 
    if (j < prev) { System.out.print("Not Growing Up."); return; } 
    prev = j; 
} 
System.out.print("Growing Up."); 
0
String numbers = "1 2 3 4"; // Let's take this input for example 
    int temp = 0;    // This use to compare previous integer 
    boolean isAsc = false;  // This store whether the digits is growing up or not 

    StringTokenizer st = new StringTokenizer(numbers); // Declare StringTokenizer 
    while (st.hasMoreTokens()) { 

     int next = Integer.parseInt(st.nextToken()); // Put the first integer in next (1) 

     if(next > temp){ // if (1) > 0 

     temp = next;  // Assign 1 to temp, next time digit 2 will compare with digit 1   
     isAsc = true; // Assign the ascending to true 

     } else 

     isAsc = false; 
    } 

    if(isAsc) 
     System.out.print("Growing up."); 
    else 
     System.out.print("Not growing up."); 
    } 

Вы можете сохранить введенные пользователем данные в виде строки, как переменной numbers я объявил и разбить их на каждой лексемы для сравнения цели.

-1
import java.lang.reflect.Array; 
import java.util.*; 

public class A1 { 
public static void main(String[] args) { 
    int a[]={2,5,0,1}; 
    Arrays.sort(a); 
    int b= a.length; 
    for(int i=0;i<a.length;i++) 
    { 

     System.out.println(+a[i]+"\t"+a[b-1]); 
     b--; 



    } 


} 

}