帮我看一下这个简单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 展开
我的程序是
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 展开
展开全部
nextline()的作用是:此扫描器执行当前行,并返回跳过的输入信息。
不过我试了下,将吧description的位置和Qantity换了下
如下:
System.out.println("Description: ");
a1 = scannerObject.nextLine();
System.out.println("Quantity: ");
n1 = scannerObject.nextInt();
这样就可以了
不过我试了下,将吧description的位置和Qantity换了下
如下:
System.out.println("Description: ");
a1 = scannerObject.nextLine();
System.out.println("Quantity: ");
n1 = scannerObject.nextInt();
这样就可以了
追问
可我的要求不能换格式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-08-10
展开全部
命名规则严重问题!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,问题的关键就是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:
查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 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") ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
System.out.print("Quantity: ");这样能换行吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询