我正在编写一个程序,帮助火星定居者计算他们潜在房屋的面积/大小。程序的整个前半部分按预期工作,但由于某种原因,当我提示用户是否愿意输入第二所房子时,我的扫描仪不再接受任何输入,程序执行结束,不允许我键入yes或no作为响应,它只是打印出用户提示并中断。我到底做错了什么?
import java.util.Scanner;
public class MartianHouses{
public static void main(String[] args){
/*Set up scanner & declare variables*/
Scanner sc = new Scanner(System.in);
double sqFt = 14.5;
/*Receive input from user*/
System.out.println("Enter the settler's name: ");
String name = sc.nextLine();
System.out.println("Enter the length of a side of the house: ");
double s = sc.nextDouble();
/*Calculate area of floor&roof*/
double floorArea = 2*s*s*(1 + Math.sqrt(2));
/*Calculate walls area*/
double wallsArea = 8 * 12 * s;
/*Calculate total area*/
double totArea = (floorArea * 2) + wallsArea;
/*Calculate floor cost*/
double totCost = totArea * sqFt;
/*Print results*/
System.out.print(name + " has a house surface area of ");
System.out.printf("%,.2f", totArea);
System.out.print(" and a cost of $");
System.out.printf("%,.2f", totCost);
System.out.print(".");
System.out.println(" Would you like to enter another house? Enter no to exit.");
String response = sc.nextLine();
double sqFt2 = 14.5;
switch(response.toLowerCase()) {
case "yes" :
System.out.println("Enter the settler's name: ");
String name2 = sc.nextLine();
System.out.println("Enter the length of a side of the house: ");
double s2 = sc.nextDouble();
double floorArea2 = 2*s2*s2*(1 + Math.sqrt(2));
double wallsArea2 = 8 * 12 * s2;
double totArea2 = (floorArea2 * 2) + wallsArea2;
double totCost2 = totArea2 * sqFt2;
System.out.print(name2 + " has a house surface area of ");
System.out.printf("%,.2f", totArea2);
System.out.print(" and a cost of $");
System.out.printf("%,.2f", totCost2);
System.out.print(".");
break;
case "no" :
break;
}
}
}
执行sc.nextDouble()时,键入一个输入,后跟一个换行符(enter按钮)。
因此,双精度 s 获取您输入的值,但在扫描仪缓冲区中,您仍然有一个换行符。
你能做到的
>
在 sc.next 双 () 之后,执行一个 sc.next() / sc.nextLine() 以清除缓冲区。
另一种选择是
字符串s=sc.nextDouble();
然后尝试将s转换为整数。
问题内容: 我不明白为什么第15行不做任何输入,将不胜感激:3 输出量 请输入您的问题的第一个数字!2552所以您选择了2552选择您的第二个数字41您选择了第二个数字41现在输入ur运算符 由于某种原因,输出在最后一行结束并停止,并且不接收任何信息! 问题答案: 您需要在调用行的后面立即调用,原因是仅要求下一个整数不会占用输入中的整个行,因此您需要通过调用来跳至输入中的下一个新行字符。 每次您需
因此,我是一个新的Java程序员,我正试图弄清楚为什么一段代码不能工作。我遇到的问题是“String interests=input.nextLine();”这一行,它跳过了用户的输入并跳转到下一个System.out,所以它只显示“Your Profile...”。在允许用户输入任何数据之前。抱歉,如果这是一个愚蠢的问题,我是很新的!
我编写了一个函数来接收用户输入。找不到正确答案。总是失败。我现在疯了。
我正在使用Java的扫描仪读取用户输入。如果我只使用nextLine一次,它可以正常工作。对于两个nextLine,第一个不等待用户输入字符串(第二个)。 输出: X:Y:(等待输入) 我的代码 你知道为什么会发生这种事吗?谢谢
我是一名初级java程序员。我正在尝试编写一个简单的程序,根据物质的半衰期来计算一种物质在你体内的残留量,以及根据何时以及如何服用药物来计算何时达到平衡(后者尚未完成)。 我最初遇到了扫描仪资源泄漏的问题,但我在这里找到了答案。然而,现在我已经修复了扫描仪,我似乎不能初始化一个常量double变量作为用户输入。扫描仪本身工作,变量获得输入值,但是java一直拒绝它,说“剂量不能被解析为变量”。我甚
问题内容: 因此,我是一名新Java程序员,我试图弄清楚为什么一段代码无法正常工作。我遇到的问题是:“字符串兴趣= input.nextLine();”,它跳过了用户的输入并跳至下一个System.out,因此它仅在控制台中显示“您的个人资料…”在允许用户输入任何数据之前。抱歉,这是一个愚蠢的问题,我很新! 问题答案: 这样说: 其余代码可能与您上面的代码相同。 编辑: 它必须是这样的(我的意思是