Как сказать char1 = f и char2 = t? - PullRequest
0 голосов
/ 03 ноября 2018
import java.io.IOException;

public class DatentypChar {

    public static void main(String [] args) throws IOException { 

        char c1 = (char) System.in.read(); 
        char c2 = (char) System.in.read(); 

        c1 = 'f' || 't'; // I would like to say c1 is f or t and c2 is t or f. 
        c2 = 't' || 'f';

        if(c1 == 'f' && c2 == 'f');{
            System.out.println(0); 

        }

        if(c1 == 'f' && c2 == 't');{
            System.out.println(1);
        }

        if(c1 == 't' && c2 == 'f');{
            System.out.println(2);
        }

        if(c1 == 't' && c2 == 't');{
            System.out.println(3);
        }
    }
}

Привет, ребята Вот так это выглядит сейчас. Как я могу это исправить? Я хотел бы сказать, что c1 - это f или t, а c2 - это f или t.

ЗАДАЧА:

Напишите программу с двумя символами (тип данных char) поверх Стандартный ввод. Два символа представляют логическое значение Ценности. Символ 'f' для false и символ 't' для true. В зависимости от этого ввода значение int с текстом подсказки отображается на стандартном выходе. Зависимость показана в следующей таблице:

1st character 2nd character Output value
false         false         0
false         true          1
true          false         2
true          true          3

Если действительная комбинация не введена, то значимая Сгенерировано сообщение об ошибке.

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

Этого нельзя сделать.
Однако вы можете использовать логические переменные для проверки правильности ввода:

boolean first = (c1 == 'f') || (c1 == 't');
boolean second = (c2 == 'f') || (c2 == 't');

if (first && second) {
    if (c1 == 'f' && c2 == 'f')
        System.out.println("Both are false: " + 0);
    else if (c1 == 'f' && c2 == 't')
        System.out.println("First is false and second is true: " + 1);
    else if (c1 == 't' && c2 == 'f')
        System.out.println("First is true and second is false: " + 2);
    else if (c1 == 't' && c2 == 't')
        System.out.println("Both are true: " + 3);
} else {
        System.out.println("No valid data entered");
}

Здесь first и second являются boolean переменными, которые будут true, только если ввод был действительным.
Так что, если они оба true, вы можете распечатать желаемый результат.
Приведенный выше код может быть упрощен до этого:

boolean first = (c1 == 'f') || (c1 == 't');
boolean second = (c2 == 'f') || (c2 == 't');

if (first && second) {
    if (c1 == 'f' && c2 == 'f')
        System.out.println("Both are false: " + 0);
    else if (c1 == 'f')
        System.out.println("First is false and second is true: " + 1);
    else if (c2 == 'f')
        System.out.println("First is true and second is false: " + 2);
    else
        System.out.println("Both are true: " + 3);
} else {
        System.out.println("No valid data entered");
}

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

if(c1 == 'f' && c2 == 't');

точка с запятой в конце оператора if неверна

0 голосов
/ 03 ноября 2018
string combStr =  String.Join("", 
    Console.ReadKey().KeyChar, 
    Console.ReadKey().KeyChar 
    );

int ?ansOut = null;

if (combStr.Replace("f", "").Replace("t", "").Length < combStr.Length)
{                
    if (combStr == "ff")
        ansOut = 0;
    if (combStr == "ft")
        ansOut = 1;
    if (combStr == "tf")
        ansOut = 2;
    if (combStr == "tt")
        ansOut = 3;

    Console.WriteLine(ansOut);                
}
0 голосов
/ 03 ноября 2018

Я думаю, вы пытаетесь спросить, как проверить, что пользователь вводит либо 't', либо 'f'.

В этом случае вы можете использовать цикл while, который вы завершаете, когда пользователь ввел правильные значения, например:

char c1;
char c2;
boolean correctInput = false;
while (!correctInput) {
    System.out.println("Enter t or f");
    c1 = (char) System.in.read(); 
    c2 = (char) System.in.read(); 
    if ((c1 == 't' || c1 == 'f') && (c2 == 't' || c2 == 'f')) {
        correctInput = true;
    }
}
//Rest of your code...
...