Właśnie próbowałem napisać prosty kalkulator i działa dobrze...

To, co chcę teraz zrobić, to dołączyć pętlę „do while” lub „while”, aby powtarzać instrukcję, dopóki użytkownik nie wprowadzi jednego z czterech podstawowych znaków operatora. Udało mi się to osiągnąć innymi metodami (jeśli i switch), ale chcę to uprościć.

Miałem również wiele problemów z nauką parsowania znaku w metodach scanner i JPane. Mógłbym osiągnąć za pomocą różnych zasobów w Internecie, ale prosta metoda, która pomogłaby mi lepiej zrozumieć logikę, a nie tylko osiągnąć, zostanie bardzo doceniona...

    public class MyCalculator{
    public static void main (String [] args){

    // Let us code a simple calculator
    char OP;
    System.out.println("This is a simple calculator that will do basic calculations such as :\nAddition, Multiplication, Substraction and Division.");

    // Create a scanner object to Read user Input.
    Scanner input = new Scanner(System.in);

    System.out.println("Enter Any positive number followed by pressing ENTER.");
    int firstNum = input.nextInt();

    // Need to Loop the below statement till one of the four (+,-,*,/) operator is entered.

    System.out.println("Enter your choice of OPERATOR sign followed by pressing ENTER.");
    OP = input.next().charAt(0);

    System.out.println("Enter your Second number followed by an ENTER stroke.");
    int secNum = input.nextInt();

    // Various possible Resolution
    int RSum = firstNum+secNum;
    int RSubs= firstNum-secNum;
    int RPro = firstNum*secNum;
    double DPro = firstNum/secNum;

    // Conditional statements for Processing
    Switch (OP){ 
    case '+': System.out.println("The Resulting sum is "+ RSum);
    break;
    case '-': System.out.println("The Resulting sum is "+ RSubs);
    break;
    case '*': System.out.println("The Resulting Product is "+ RPro);
    break;
    case '/': System.out.println("The Resulting Divisional product is "+ DPro);
    break;
    default : System.out.println("Try Again");

        }

    }
}
0
Aga Rengma 10 listopad 2018, 21:27

1 odpowiedź

Najlepsza odpowiedź

Możesz użyć czegoś takiego:

while(scanner.hasNext()) {
  //some code
   int number = scanner.NextInt();
}

Ale zaimplementowałbym kalkulator w następujący sposób:

int num1 = scanner.NextInt();
String op = scanner.Next();
int num2 = scanner.NextInt();

Możesz zapętlić ciąg w następujący sposób i wykonać kontrole:

for (char ch : exampleString.toCharArray()){
  System.out.println(ch);
}

Możesz także przejść przez String w następujący sposób:

for (int i=0; i<examplestring.length(); i++) {
  char c = examplestring.charAt(i);
}

Możesz zapętlić, aż dostaniesz + lub - w następujący sposób:

char operator;    
do {
  char operator = scanner.next().get(0);
}while(operator != '+' || operator != '-')

Możesz zapętlić i wydrukować komunikaty o błędach w następujący sposób:

char operator;
do {
  char operator = scanner.next().get(0);
  if(!isValidOperator(operator)) {
    System.out.println("invalid operator");
  }
}while(!isValidOperator(operator))

public boolean isValidOperator(char operator) {
  if(operator == '+') {
    return true;
  } else if (operator == '-') {
    return true;
  }

  return false;
}
1
Charlie 10 listopad 2018, 23:38