好的,所以基本上,我把我所有的方法都链接起来了,一切看起来都很好(通过我的菜鸟眼睛)。我有一个循环,并质疑用户是否要继续。我最初有一个基于 y/n 输入的 if else 语句。如果输入 n,我使用中断;陈述。但是,我在注释//这不起作用的行中初始化扫描仪和打印语句。为什么我输入后它不让我输入一些东西?
主类
import java.util.Scanner;
public class Triangle
{
public static void main (String[]args)
{
Scanner input = new Scanner(System.in);
int x, y, z;
for (int loop = 1; loop <= Integer.MAX_VALUE; loop++)
{
System.out.println("Please enter the 3 sides of the triangle.");
x = input.nextInt();
y = input.nextInt();
z = input.nextInt();
boolean goAgain;
String userInput;
TriMethods triTest = new TriMethods(x, y, z);
System.out.println("You entered a triangle with the sides " + triTest.toString() + ": ");
triTest.isEqual();
triTest.isIsos();
triTest.isScal();
System.out.println("Would you like to go again? y/n");
String answer = userInput.nextLine(); //THIS DOESN'T WORK
}
}
}
二等舱
public class TriMethods {
int side1;
int side2;
int side3;
public TriMethods(int x, int y, int z)
{
side1 = x;
side2 = y;
side3 = z;
}
public int longSide()
{
int longSide = side1;
if (side2 >= longSide && side2 >= side3)
{
longSide = side2;
}
else if (side3 >= side2 && side3 >= side2)
{
longSide = side3;
}
return longSide;
}
public void shortSide()
{
int shortSide = side1;
if (side2 <= shortSide && side2 <= side3)
{
shortSide = side2;
}
else if (side3 <= side2 && side3 <= side2)
{
shortSide = side3;
}
System.out.println("The long side is " + shortSide);
}
public void isEqual()
{
if (side1 == side2 && side1 == side3 && side2 == side3)
{
System.out.println("This triangle is equalateral");
}
}
public void isIsos()
{
if (side1 == side2 && side1 != side3)
{
System.out.println("This triangle is isosceles");
}
else if (side1 == side3 && side1 != side2)
{
System.out.println("This triangle is isosceles");
}
else if (side2 == side1 && side2 != side3)
{
System.out.println("This triangle is isosceles");
}
else if (side2 == side3 && side2 != side1)
{
System.out.println("This triangle is isosceles");
}
}
public void isScal()
{
if (side1 != side2 && side1 != side3 && side2 != side3)
{
System.out.println("This triangle is scalene");
}
}
public String toString()
{
return (side1 + " " + side2 + " " + side3);
}
}
在获得三角形的边后尝试使用 input.nextLine();
,当您按 Enter 时,这将消耗新行。
尝试
public class Triangle
{
public static void main (String[]args)
{
int x, y, z;
String proceed="";
do
{
Scanner input = new Scanner(System.in);
System.out.println("Please enter the 3 sides of the triangle.");
x = input.nextInt();
y = input.nextInt();
z = input.nextInt();
boolean goAgain;
String userInput;
TriMethods triTest = new TriMethods(x, y, z);
System.out.println("You entered a triangle with the sides " + triTest.toString() + ": ");
triTest.isEqual();
triTest.isIsos();
triTest.isScal();
input.nextLine();
System.out.println("Would you like to go again? y/n");
proceed = input.nextLine(); //THIS DOESN'T WORK
}while (!proceed.equalsIgnoreCase("n"));
}
}
基本上你的字符串userInput
没有值。您可能想使用Scanner
获得价值