2013-05-05 2 views
2

Я хочу задать небольшой вопрос о моей программе.Как написать мою программу Java с помощью библиотеки ACM (ConsoleProgram)?

Это мой пример кода:

public static void main(String[] args) { 
    int q; 
    int p; 
    int thelargest; 
    int thesmallest; 

    Scanner input = new Scanner(System.in); 
    System.out.println("Enter the list of number : "); 
    String input2 = input.nextLine(); 

    String[] numbers = input2.split(" "); 

    int[] result = new int[numbers.length]; 
    for (p = 0; p < numbers.length; p++) { 
     result[p] = Integer.parseInt(numbers[p]); 

    } 

    for (q = 0; q < result.length; q++) { 
     System.out.print(""); 
     System.out.println(result[q]); 
    } 

    System.out.println("Largest Number : " + LargestNumber(result)); 
    System.out.println(" Smallest Number : " + SmallestNumber(result)); 
    thelargest = LargestNumber(result); 
    thesmallest = SmallestNumber(result); 
    System.out.println("The Arithmetic Mean : " 
      + AirthmeticMean(result, thesmallest, thelargest)); 

} 

public static int SmallestNumber(int[] series) { 
    int thesmallest = series[0]; 
    for (int i = 1; i < series.length; i++) { 
     if (series[i] < thesmallest) { 

      thesmallest = series[i]; 
     } 
    } 
    return thesmallest; 
} 

public static int LargestNumber(int[] series) { 
    int thelargest = series[0]; 
    for (int i = 1; i < series.length; i++) { 
     if (series[i] > thelargest) { 

      thelargest = series[i]; 
     } 
    } 
    return thelargest; 
} 

public static float AirthmeticMean(int[] result, int thesmallest, 
     int thelargest) { 
    int sum = 0; 
    for (int i = 0; i < result.length; i++) { 
     sum += result[i]; 
    } 

    sum -= thesmallest; 
    sum -= thelargest; 

    return (float) sum/result.length; 
} 

Как я могу преобразовать этот образец кода в ConsoleProgram (который находится в библиотеке ACM)? Какие детали необходимо изменить или добавить?

Я начал с:

public class ArithmeticMean extends ConsoleProgram { 

} 

Но я не знаю, что делать дальше.

ответ

2

В библиотеке Acm не основной метод, хотя вам нужно вместо этого использовать следующую конструкцию:

public void run() {} 

Здесь не является API этой библиотеки http://jtf.acm.org/javadoc/student/ Выберите acm.program пакет ConsoleProgram класса и найти соответствующие методы см также acm.io/класс IOConsole

eg System.out.println() -> println() Сканер (ввод строки) -> readLine (строка приглашения) и т. Д.

остальное то же, что и у вас в коде.

Хорошо, вот вы код в АКМ: (немного некрасиво, но работает отлично :)

import acm.program.ConsoleProgram; 

public class StackOverflow extends ConsoleProgram 
{ 
    private static final long serialVersionUID = 1L; 

    public void run() 
    { 
     int q; 
     int p; 
     int thelargest; 
     int thesmallest; 
     String input2 = ""; 
     String[] numbers = null; 

     println("Enter the list of number : "); 
     while (true) { 
      String input = readLine(); 
      if (input.equals("")) 
       break; 
      input2 += input + " "; 
     } 
     numbers = input2.split(" "); 

     int[] result = new int[numbers.length]; 
     for (p = 0; p < numbers.length; p++) { 
      result[p] = Integer.parseInt(numbers[p]); 

     } 

     for (q = 0; q < result.length; q++) { 
      print(""); 
      println(result[q]); 
     } 

     println("Largest Number : " + LargestNumber(result)); 
     println(" Smallest Number : " + SmallestNumber(result)); 
     thelargest = LargestNumber(result); 
     thesmallest = SmallestNumber(result); 
     println("The Arithmetic Mean : " 
       + AirthmeticMean(result, thesmallest, thelargest)); 

    } 

    public static int SmallestNumber(int[] series) 
    { 
     int thesmallest = series[0]; 
     for (int i = 1; i < series.length; i++) { 
      if (series[i] < thesmallest) { 

       thesmallest = series[i]; 
      } 
     } 
     return thesmallest; 
    } 

    public static int LargestNumber(int[] series) 
    { 
     int thelargest = series[0]; 
     for (int i = 1; i < series.length; i++) { 
      if (series[i] > thelargest) { 

       thelargest = series[i]; 
      } 
     } 
     return thelargest; 
    } 

    public static float AirthmeticMean(int[] result, int thesmallest, 
      int thelargest) 
    { 
     int sum = 0; 
     for (int i = 0; i < result.length; i++) { 
      sum += result[i]; 
     } 

     sum -= thesmallest; 
     sum -= thelargest; 

     return (float) sum/result.length; 
    } 

} 

And Run, как JavaApplet

+0

Ok, так я должен удалить только основной метод и изменить методы печати, чтобы преобразовать мою программу в consoleprogram? – mertha

+0

AFAIK 'Scanner' тоже нужно изменить – zest

+0

Можете ли вы показать их на моем примере кода? Большое спасибо моему другу. – mertha

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