Найти минимум набора ввода данных с клавиатуры - PullRequest
0 голосов
/ 06 марта 2019

В моем учебнике есть алгоритм, написанный в псевдокоде, который затем должен быть «реализован в методе Java». Это выглядит так:

чтение мин;
пока не eoln do
читать х
если х <мин, то <br> мин <- х <br> конец если
конец пока
мин. печати

Тогда мне дают этот код:

import java.util.Scanner;

int min() {
Scanner input = new Scanner(System.in);
System.out.println("x=? (999 to end)");
int x = input.nextInt();
int min = x;

while (x!=999) {
    System.out.println("x=? (999 to end)");
    x = input.nextInt();
    if (x < min) {
    min = x;
    }
}
return min;
}

Я поместил все ниже import.Scanner внутри основного метода и внутри класса, как это:

public class MyAlgorithm {
public static void main(String[] args) {
// code here
}
}

Но тогда я получаю это сообщение об ошибке в Терминале:

MyAlgorithm.java:7: error: ';' expected
int min() {
           ^
1 error

Я что-то упустил? Если я поставлю точку с запятой, все это просто не сработает.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Похоже, вы поместили свой метод min внутри main, это определение методов из других методов, которые не будут работать должным образом и не смогут скомпилироваться.Основной метод - это команды, которые вы хотите запускать, как только вы запускаете программу, любые другие функции в классе должны быть объявлены вне его, и если вы хотите, чтобы они выполнялись в main, вы делаете вызов метода.

это должно выглядеть примерно так:

import java.util.Scanner;

public class MyAlgorithm {

    int min() {
    //(min code)
    }

    public static void main(String[] args) {
    // code here
    //corrected according to Uli's comment
        MyAlgorithm m = new MyAlgorithm();
        int result = m.min();
    }
}

Я предлагаю прочитать о том, как структурированы Java-программы.Вот статья о методах.

0 голосов
/ 06 марта 2019

Не помещайте ваш метод min() в метод main().В Java вы не можете определить метод внутри метода.В Java вам нужен объект для вызова его методов (за исключением того, что вы делаете методы статическими).Итак, ваш окончательный код выглядит примерно так:

import java.util.Scanner;

public class MyAlgorithm  {

   public static void main(String[] args) {
      MyAlgorithm  m = new MyAlgorithm ();
      m.min();
   }

   int min(){
      //Your min code goes here
      return min_value;
    // min_value is the same as your min variable. It has another name to
    // prevent name collisions
   }
}

Если вам разрешено использовать статические методы (что я не думаю), вы можете использовать следующую альтернативу:

static int min(){
    //Your min code goes here
    return min_value;
    // min_value is the same as your min variable. It has another name to
    // prevent name collisions
}

public static void main(String[] args) {
   int result = MyAlgorithm.min();
}
...