Сделайте петлю с вводом az - PullRequest
0 голосов
/ 22 сентября 2019

Я полный новичок в Java, но я хочу сделать программу, которая принимает данные от пользователя, [A / a] - [C / c], [D / d] - [F / f], ии т. д., а затем возвращает значение ([A / aC / c = 1], [D / dF / f = 2] ....

Если входное значение не AZ или az, возвращает "Неверный ввод ". (Я думаю, что сам могу понять это).

Я полагаю, что мог бы сделать оператор" ToUpperCase "на входе, но я не совсем уверен, как это сделать.

Я бы предпочел не использовать никаких специальных баз данных.

Вот мой код:

import java.util.Scanner;

открытый класс TelefonTastatur {

public static void main(String[] args) {

    String korrTall = "Korresponderer til tallet "; //Strings are in Norwegian, but I don't need help with those :-)

    System.out.println("Dette programmet konverterer bokstav-input til korresponderende tall på et telefontastatur.");
    System.out.println("Oppgi en bokstav (A-Z: "); //Asks user for A-Z input.

    Scanner sc = new Scanner(System.in);

    char c = sc.next().charAt(0); //Perhaps toUpperCase to lower number of switch cases?

    switch (c) {
        case ('A'-'C'): //Not sure how to make A-C and/or a-c. I could make an individual case for all inputs, but that would make a lot of code.
        case ('a'-'c'):
        System.out.print(korrTall + "2.");
        break;

        case (D/d - F/f):
        case ():
            System.out.print(korrTall + "3.");
        break;

        case (G/g - I/i):
        case ():
            System.out.print(korrTall + "4.");
        break;

        case (J/j - L/l):
        case ():
            System.out.print(korrTall + "5.");
        break;

        case (M/m - O/o):
        case ():
            System.out.print(korrTall + "6.");
        break;

        case (P/p - S/s):
        case ():
            System.out.print(korrTall + "7.");
        break;

        case (T/t - V/v):
        case ():
            System.out.print(korrTall + "8.");
        break;

        case (W/w - Z/z):
        case ():
            System.out.print(korrTall + "9.");
        break;

        case 'F':
        case 'f':
            System.out.print(korrTall + "0.");
        break;

        default:
            System.out.println("Det du har tastet inn tilsvarer ikke noe tall på et telefontastatur.");
        break;  

    }

}

}

Ответы [ 3 ]

0 голосов
/ 22 сентября 2019

Если вы хотите прочитать одно письмо от пользователя, вы можете использовать readInput(), предоставленный во фрагменте кода.

Затем, например, в вашем main(), вы можете попросить пользователя:введите 2 буквы и затем вы предоставите ему результат.

    public static void main(String[] args) {
        try{
            char inputOne = readInput();
            char inputTwo = readInput();
            handle(inputOne,inputTwo);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }

    static char readInput(){
        System.out.println("Insert a character");
        String input = Console.readLine();
        if (input.length==0) {
            char c = input.charAt(0);
            if (Character.isLetter(c)) {
                return c;
            }
        }
        throw new Exception("Invalid input!");
    }

    static void handle(char a, char b){
        // your logic to handle the input of the user
    }
0 голосов
/ 22 сентября 2019

Ваш вопрос не совсем ясен, но я стараюсь вам помочь.В следующий раз напишите, что вы пытались.

Этот простой код поможет вам, его можно улучшить, поэтому давайте сделаем так: D

Scanner scanner = new Scanner(System.in);

System.out.println("Insert first char");
String firstChar = scanner.next().toUpperCase();
if (firstChar.length() != 1 || (firstChar.toCharArray()[0] < 65 || firstChar.toCharArray()[0] > 90)) {
    System.out.println("Please, insert one single character [a-z/A-Z]");
    return;
}
System.out.println("Insert second char");
String secondChar = scanner.next().toUpperCase();
if (secondChar.length() != 1 || (secondChar.toCharArray()[0] < 65 || firstChar.toCharArray()[0] > 90)) {
    System.out.println("Please, insert one single character");
    return;
}

System.out.println(firstChar + " - " + secondChar + " = " + Math.abs(firstChar.toCharArray()[0] - secondChar.toCharArray()[0]));

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

Еще одно улучшение, которое вы можете сделать, - это обрабатывать, когда пользователь вставляет что-то неправильно.

Давайтепопробуй закодировать: D пока

0 голосов
/ 22 сентября 2019

Вам потребуется использовать класс Scanner для выполнения пользовательского ввода.

import java.util.Scanner;

Затем создайте переменную, которая будет принимать ввод с клавиатуры.

Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a letter: ");
String text = keyboard.nextLine();

Создатьметод, который возвращает число, данное символу.a-z равно 97-122 в Java, а A-Z равно 65-90.

public int toNum(String text) {
  //Ensure that the text is only 1 character long.
  if(text.length() > 1) return -1;

  //Convert the one-character String to type char.
  char letter = text.charAt(0);

  //Convert char to its equivalent number value.
  int rawNum = letter;
  int newNum;

  //Convert the number to a value 0-25.
  if(rawNum >= 'a' && rawNum <= 'z') {
    newNum = rawNum - 'a';
  } else if(rawNum >= 'A' && rawNum <= 'Z') {
    newNum = rawNum - 'A';
  } else {
    //None of the characters were letters A-Z.
    System.out.println("Invalid input");
    return -1;
  }

  //If {a,b,c} are 1 and {d,e,f} are 2, then {0,1,2} -> 1 and {3,4,5} -> 2
  //Take the floor of the new number divided by 3.
  int toReturn = Math.floor(newNum / 3.0) + 1;
  return toReturn;
}

Теперь просто вызовите ваш метод с помощью пользовательского ввода.

toNum(text);

Вы также можете распечатать возвращенное значение пользовательского ввода.

System.out.println(toNum(text));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...