【发布时间】:2013-04-05 03:11:52
【问题描述】:
我应该编写一个程序来持续接受办公桌订单数据并显示超过 36 英寸长且至少有一个抽屉的橡木办公桌的所有相关信息。
import java.util.*;
public class MangMaxB
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
char ans;
int orderNum=0, length=0, width=0, numDrawer=0, price=1000;
String name;
System.out.print("Do you wish to enter Oak " +
"desk order data? (y/n)");
ans = input.nextLine().charAt(0);
while (ans != 'n')
{
System.out.print("Enter customer name: ");
name=input.nextLine();
System.out.print("Enter order number: ");
orderNum=input.nextInt();
System.out.print("Enter length and width of Oak desk" +
" separated by a space: ");
length = input.nextInt();
width = input.nextInt();
System.out.print("Enter number of drawer/s: ");
numDrawer=input.nextInt();
if ((length>36)&&(numDrawer>=1))
{
if ((length*width)>750)
{
price+= 250;
}
price+= (numDrawer*100);
price+= 300;
System.out.println("\nOak desk order information:\n"
+ "Order number: " + orderNum + "\n"
+ "Customer name: " + name + "\n"
+ "Length: " + length + ", width: "
+ width + ", surface: " + (length*width)
+ "\n" + "Number of drawer/s: " + numDrawer
+ "\nPrice of the desk is P " + price);
}
else
{
System.out.println("\nOak desk order isn't over 36 " +
"inches long and doesn't have a drawer");
}
System.out.print("Any more items? (y/n) ");
ans = input.nextLine().charAt(0);
}
}
}
我能够输入数据并显示它,但由于它是一个循环,所以在第二次尝试时,它不起作用。
它说“线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0 在 java.lang.String.charAt(未知来源) 在 controlStruc.MangMaxB.main"
我该如何解决这个问题?
【问题讨论】:
-
为什么不只处理
String对象呢?从String中取出char没有任何意义。无论如何,在我看来它应该可以工作,您确定您在询问时输入了一个字符吗?如果您只是按Enter,则String中的位置0 处不会有char。 -
好吧,在我看来
input.nextLine()在循环结束时是一个空字符串 -
@SamIam 为什么它是一个空字符串,尽管这是真正的问题!
-
@Quetzalcoatl 我同意使用字符没有什么意义,但你错了,因为代码不能以其当前形式工作!
标签: java loops while-loop iteration java.util.scanner