Есть ли способ предотвратить пользователя программы Чтобы ввести int, когда нам нужна строка? [Дубликат]

Отсутствует «extern» в объявлениях / определениях переменной const (только для C ++)

Для людей, прибывающих с C, может показаться неожиданным, что в C ++ глобальные переменные const имеют внутренние (или статические) связь. В C это не так, поскольку все глобальные переменные неявно extern (т.е. когда отсутствует ключевое слово static).

Пример:

// file1.cpp
const int test = 5;    // in C++ same as "static const int test = 5"
int test2 = 5;

// file2.cpp
extern const int test;
extern int test2;

void foo()
{
 int x = test;   // linker error in C++ , no error in C
 int y = test2;  // no problem
}

correct would использовать файл заголовка и включить его в file2.cpp и file1.cpp

extern const int test;
extern int test2;

. В качестве альтернативы можно было бы объявить переменную const в файле file1.cpp с явным extern

1
задан user unknown 6 November 2013 в 19:15
поделиться

4 ответа

попробуйте это

    int[] cw_Mark = new int[6];
    for (int i = 0; i < cw_Mark.length; i++) {
        System.out.println("Please Enter Your Module " + (i + 1) + " Coursework Mark: ");
        while (true) {
            String next = input.next();
            try {
                cw_Mark[i] = Integer.parseInt(next);
                if (i >= 0 || i <= 100) {
                    break;
                }
            } catch (NumberFormatException e) {
            }
            System.out.println("Please Enter a Number Between 1 and 100");
        }
    }
0
ответ дан Evgeniy Dorofeev 4 September 2018 в 08:07
поделиться

Инкапсулируйте его в методе - что-то вроде ниже. И затем просто используйте метод для извлечения целых чисел от пользователя.

public static int getInt() {

    System.out.print("Please enter an integer");
    if (console.hasNext("stop")) {
        System.out.println("***Terminated***");
        System.exit(0);
    }
    while(!console.hasNextInt()) {
        System.out.print("Input is not a valid integer!");
        console.next();
    }
    int temp = console.nextInt();
    while(temp<0 && temp>100) {
        System.out.println("invalid input");
        temp = console.nextInt();
    }
    return temp;    
}

EDIT:

Это полное решение, если вы идете с этим подходом к блоку try-catch.

package standard;

import java.util.Scanner;
public class Main {
    static Scanner console = new Scanner(System.in);
    public static void main(String[] args) {

        int[] cw_Mark = new int[6];
        for (int i = 0; i < cw_Mark.length; i++) {
            System.out.println("Please Enter Your Module " + (i + 1)
                    + " Coursework Mark: ");
            cw_Mark[i] = getInt();
        }
    }

    //Gets the next integer from the console. 
    public static int getInt() {

        System.out.print("Please enter an integer");
        if (console.hasNext("stop")) {
            System.out.println("***Terminated***");
            System.exit(0);
        }
        while (!console.hasNextInt()) {
            System.out.print("Input is not an integer!");
            console.next();
        }
        int temp = console.nextInt();
        while (temp <= 0 && temp >= 100) {
            System.out.println("Input must be between 0 and 100");
            temp = console.nextInt();
        }
        return temp;
    }

}
1
ответ дан Andersnk 4 September 2018 в 08:07
поделиться

Чтобы избежать выхода программы из исключения исключения, вы можете просто обернуть оператор ввода принимающего пользователя с помощью try / catch:

try {
    cw_Mark[i] = input.nextInt();
} catch(InputMismatchException e) {
     System.out.println("Entered value is not a number");
}
0
ответ дан Juned Ahsan 4 September 2018 в 08:07
поделиться

Это должно сделать это:

while(true)
{
    try {
        System.out.println("Please Enter Your Module " + (i+1) + " Coursework Mark: ");
        cw_Mark[i] = input.nextInt();
        if(cw_Mark[i}>=0&&cw_Mark[i]<=100)
            break;
    } catch(InputMismatchException e) {
         System.out.println("Needs a number.");
    }
    System.out.println("Needs a number from 1 to 100");
}

Это приведет к сбою любых плохих значений и продолжит предлагать вашему пользователю дать вам правильные значения до тех пор, пока они этого не сделают.

Изменить: вам просто нужно вставить это в том месте, где у вас в настоящее время есть

System.out.println("Please Enter Your Module " + (i+1) + " Coursework Mark: ");
        cw_Mark[i] = input.nextInt();

И вытащите чек на 0 - 100. Там ничего хорошего не делается, он не проверяет в нужном месте сделайте разницу.

0
ответ дан NathanTempelman 4 September 2018 в 08:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: