帮我看一下这个简单java程序的问题

题目求是先显示提示:“Quantity:”,然后在提示语后面录入一个整形的数b,输好之后第二行显示提示语“Description:”,然后在提示语后面录入一句英文a,输好... 题目求是先显示提示:“Quantity: ”,然后在提示语后面录入一个整形的数b,输好之后第二行显示提示语“Description: ”,然后在提示语后面录入一句英文a,输好之后再显示第三行“Unit Price: ”,然后在提示语后面录入浮点型的单价c, 录入后下两行第一行显示:Order for b a,其中a那句话要大写,第二行显示“Total price t”,t就是b和c的乘积,要求t为14数位的浮点型,小数点后保留两位。
我的程序是
import java.util.Scanner;
public class PlaceOrder {
public static void main(String[] args) {
int n1;
Float n2,c1;
String a1 ;
Scanner scannerObject = new Scanner(System.in);
System.out.print("Quantity: ");
n1 = scannerObject.nextInt();
System.out.print("Description: ");
a1 = scannerObject.nextLine();
System.out.print("Unit price: ");
n2 = scannerObject.nextFloat();
c1 = n1 * n2;
System.out.printf("Total price: " + "%14.2f",c1);
System.out.print("\n");
System.out.print("Order for " + n1 + a1.toUpperCase());

}
}

我的第一行提示语可以显示,之后第二行有问题,总是连第三行的提示语一起一股脑显示了,而且不能输入一句文字,只能输入后面的unit price。。求教原因啊。。要求只准定义一个Scanner class,但是可以多次使用一个Scanner class
我的显示是这样:

Quantity: 344
Description: Unit price: 45.34
Total price: 15596.96
Order for 344
展开
 我来答
般若兮若
2012-08-10 · TA获得超过2706个赞
知道小有建树答主
回答量:1246
采纳率:0%
帮助的人:937万
展开全部
a1 = scannerObject.nextLine();这句改为
a1 = scannerObject.next();就可以了
追问
可是我要输入一句话,next的话只能输入一个词
cherryvenus
2012-08-10
知道答主
回答量:21
采纳率:0%
帮助的人:9.4万
展开全部
nextline()的作用是:此扫描器执行当前行,并返回跳过的输入信息。
不过我试了下,将吧description的位置和Qantity换了下
如下:
System.out.println("Description: ");
a1 = scannerObject.nextLine();
System.out.println("Quantity: ");
n1 = scannerObject.nextInt();
这样就可以了
追问
可我的要求不能换格式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-08-10
展开全部
命名规则严重问题!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
568145421
2012-08-10 · 知道合伙人软件行家
568145421
知道合伙人软件行家
采纳数:1353 获赞数:6756

向TA提问 私信TA
展开全部
你好,问题的关键就是next和nextLine的差别。
next:
查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。
nextLine:
此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。 因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。

所以修改如下:
import java.util.Scanner;
public class PlaceOrder {
public static void main(String[] args) {
int n1;
Float n2,c1;
String a1 ;
Scanner scannerObject = new Scanner(System.in);
System.out.print("Quantity: ");
n1 = scannerObject.nextInt();
System.out.print("Description: ");
a1 = scannerObject.next();
System.out.print("Unit price: ");
n2 = scannerObject.nextFloat();
c1 = n1 * n2;
System.out.printf("Total price: " + "%14.2f",c1);
System.out.print("\n");
System.out.print("Order for " + n1 + a1.toUpperCase());

}
}
更多追问追答
追问
可是我要输入一句话,不只一个词,用next只能用一个词
追答
是这样的,默认用的是空格做为输入标记,你需要设置才能使用换行做为输入结束标记。所以需要加一句代码。
scannerObject.useDelimiter("\n") ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qq121639503
2012-08-10 · TA获得超过119个赞
知道答主
回答量:191
采纳率:0%
帮助的人:151万
展开全部
System.out.print("Quantity: ");这样能换行吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式