Java中的扫描器和用户输入

Java中的扫描器和用户输入,java,java.util.scanner,Java,Java.util.scanner,我是一名学生,我的任务是制作一个程序,接收三角形的三条边,并输出三角形相对于边的角度。我还没有编程这个等式,但我一直在摆弄扫描仪和“如果”语句来启动程序。我已经有问题了: --这是程序开始部分的输出。但这就是它停止的地方。我会提示用户键入“D”或“R”,但不允许用户在该位置键入。然而,在程序的早期,我能够提示用户输入一个字符。有人能找出为什么前一个提示有效而这个提示无效吗-- 这是SSS三角形程序,用于查找三角形的角度。 你知道三角形的所有边但需要知道角度吗?(是/否):是 三角形边的长度是多少

我是一名学生,我的任务是制作一个程序,接收三角形的三条边,并输出三角形相对于边的角度。我还没有编程这个等式,但我一直在摆弄扫描仪和“如果”语句来启动程序。我已经有问题了:

--这是程序开始部分的输出。但这就是它停止的地方。我会提示用户键入“D”或“R”,但不允许用户在该位置键入。然而,在程序的早期,我能够提示用户输入一个字符。有人能找出为什么前一个提示有效而这个提示无效吗--

这是SSS三角形程序,用于查找三角形的角度。 你知道三角形的所有边但需要知道角度吗?(是/否):是

三角形边的长度是多少? -如果所有长度都相同,那么不要担心最小的、中等的和最大的- 最小边的长度:3 中间边的长度:4 最长边的长度:5 你想要度还是弧度的角度?(D/R):

--这是代码。最后一行是我遇到麻烦的地方--

公共类SSSTriangle{
公共静态扫描仪读取=新扫描仪(System.in);
公共静态void main(字符串[]args){
System.out.print(“这是SSS三角形程序,用于查找三角形的角度。\n您知道三角形的所有边,但需要知道角度吗?(Y/n):”;
字符串响应=read.nextLine();
if(response.contains(“N”)){
System.out.println(“好的,祝您愉快!”);
}
如果(响应包含(“Y”)){
给予甲硫氨酸();
}
}
公共静态void giveMeTheSides(){
System.out.println(“\n三角形边的长度是多少?\n-如果所有长度都相同,则不必担心最小、中等和最大-”;
系统输出打印(“最小边的长度:”);
双a=read.nextDouble();
系统输出打印(“介质面长度:”);
double b=read.nextDouble();
System.out.print(“最长边的长度:”);
双c=read.nextDouble();

如果(a问题是程序确实读取了一行,然后退出。它正在查找某些内容,因为当您读取最后一个双精度字符时,用户输入了一个换行符,但它从未被读取(因为您仅读取双精度字符)。要解决此问题,您只需读取另一行(使用额外的换行符)在nextDouble()之后,除了当前的nextLine()

System.out.print(“最小边的长度:”);
双a=read.nextDouble();
系统输出打印(“介质面长度:”);
double b=read.nextDouble();
System.out.print(“最长边的长度:”);
双c=read.nextDouble();
read.nextLine();//放弃多余的换行符

如果(a将最后一条else语句更改为read.next(),则代码将执行。您只需要获得一个字符串响应,因此无需从扫描仪获取整行内容:

else {
       System.out.println("Would you like the angles in degrees or radians? (D/R): ");
       String newResponse = read.next();//Change to read.next()
       System.out.println("Your new response was " + newResponse); //Psuedo code to see if the output is correct. 
       }
这是您的最后一行输出:

Would you like the angles in degrees or radians? (D/R): 
D

Your new response was D
else {
       System.out.println("Would you like the angles in degrees or radians? (D/R): ");
       String newResponse = read.next();//Change to read.next()
       System.out.println("Your new response was " + newResponse); //Psuedo code to see if the output is correct. 
       }
Would you like the angles in degrees or radians? (D/R): 
D

Your new response was D