Цель: я создаю программу, которая позволила бы мне рассчитывать площадь фигур нескольких типов. Для этого я хочу использовать сканер, чтобы прочитать вводимые пользователем данные и оценить, совпадает ли предоставленная строка с одним из имен моих фигур. Если это так, он вызвал бы метод из класса рисунка, у которого есть другой сканер.
Ошибка: при вводе имени рисунка, которое будет перенаправлено на сканер другого класса, возникает несоответствие ввода. Вот ошибка ->
Forneça qual figura dentre estas você deseja calcular a área de: circunferência, triângulo, retângulo, quadrado, trapézio, paralelogramo.
circulo
Forneça o raio do círculo:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at com.company.Circle.calculateCircleArea(Calculator.java:42)
at com.company.Calculator.main(Calculator.java:14)
Process finished with exit code 1
Вот код:
package com.company;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Forneça qual figura dentre estas você deseja calcular a área de: circunferência, triângulo, retângulo, quadrado, trapézio, paralelogramo.");
String equals = scanner.nextLine();
if (equals.toLowerCase().equals("círculo") || equals.toLowerCase().equals("circulo")) {
scanner.close();
Circle.calculateCircleArea();
} else if(equals.toLowerCase().equals("quadrado")) {
scanner.close();
Square.calculateSquareArea();
} else if(equals.toLowerCase().equals("trapézio") || equals.toLowerCase().equals("trapezio")) {
scanner.close();
Trapezium.calculateTrapeziumArea();
} else if(equals.toLowerCase().equals("paralelogramo") || equals.toLowerCase().equals("paralelograma")) {
scanner.close();
Parallelogram.calculateParallelogramArea();
} else if(equals.toLowerCase().equals("retângulo") || equals.toLowerCase().equals("retangulo")) {
scanner.close();
Rectangle.calculateRectangleArea();
} else if(equals.toLowerCase().equals("triangulo") || equals.toLowerCase().equals("triângulo")) {
scanner.close();
Triangle.calculateTriangleArea();
} else {
System.out.println("Figura inválida. Veja se foi escrita de forma correta e execute o programa novamente.");
scanner.close();
}
}
}
class Circle {
public static void calculateCircleArea() {
Scanner circle = new Scanner(System.in);
System.out.println("Forneça o raio do círculo:");
double radius = circle.nextDouble();
System.out.println("A area do círculo é: " + (Math.PI * Math.pow(radius, 2)));
circle.nextLine();
circle.close();
}
}
class Square {
public static void calculateSquareArea() {
Scanner square = new Scanner(System.in);
System.out.println("Forneça valor de um dos lados do quadrado:");
double side = square.nextDouble();
System.out.println("A area do quadrado é: " + Math.pow(side,2));
square.nextLine();
square.close();
}
}
class Trapezium {
public static void calculateTrapeziumArea() {
Scanner trapezium = new Scanner(System.in);
System.out.println("Forneça o valor da menor base do seu trapézio:");
double smallBase = trapezium.nextDouble();
System.out.println("Forneça o valor da maior base do seu trapézio:");
double largeBase = trapezium.nextDouble();
System.out.println("Forneça o valor da altura do seu trapézio:");
double height = trapezium.nextDouble();
System.out.println("A area de seu trapézio é: " + (((smallBase + largeBase) * height)/2));
trapezium.nextLine();
trapezium.close();
}
}
class Parallelogram {
public static void calculateParallelogramArea() {
Scanner parallelogram = new Scanner(System.in);
System.out.println("Forneça o valor da base do seu paralelogramo:");
double base = parallelogram.nextDouble();
System.out.println("Forneça o valor da altura do seu paralelogramo:");
double height = parallelogram.nextDouble();
System.out.println("A area do seu paralelogramo é: " + base * height);
parallelogram.close();
}
}
class Rectangle {
public static void calculateRectangleArea() {
Scanner rectangle = new Scanner(System.in);
System.out.println("Forneça o valor do comprimento do seu retângulo:");
double length = rectangle.nextDouble();
System.out.println("Forneça o valor da altura do seu retângulo:");
double height = rectangle.nextDouble();
System.out.println("A area do seu retângulo é: " + length * height);
rectangle.close();
}
}
class Triangle {
public static void calculateTriangleArea() {
Scanner triangle = new Scanner(System.in);
System.out.println("Forneça o valor da base de seu triângulo:");
double base = triangle.nextDouble();
System.out.println("Forneça o valor da altura do seu triângulo:");
double height = triangle.nextDouble();
System.out.println("O valor da area do seu triângulo é:" + (height * base) / 2);
triangle.close();
}
}
Я был бы очень признателен, если бы мне помогли. Я все еще начинаю учиться программировать. Было бы очень признательно!
РЕДАКТИРОВАТЬ: несущественные части кода, ака ответ и вопросы на португальском языке. Для ошибки вот что она говорит -> Введите, какую из этих фигур вы будете вычислять sh: окружность, треугольник, круг, прямоугольник, трапеция и т. Д. c. Я ввожу: кружок. Затем он ведет к классу Circle и спрашивает: введите радиус окружности -> Но прежде чем я смогу нажать что-либо, сканер уже закрыт и ошибка на месте.