对于循环跳过线?

时间:2015-01-25 03:10:42

标签: java

我对Java仍然有点新鲜,很抱歉,如果这是一个愚蠢的问题。基本上,我正在制作比萨饼计划,所以当我和朋友订购时,它会计算我们欠多少钱(例如,如果我们两个人在4美元的比萨饼上,我们每人支付2美元并将其添加到我们自己的总计)。我决定制作一个新的对象类型" Person"和一个实际的对象" people"。我把它变成了一个数组,让每个人都成为数组的索引。到目前为止,我只想为每个人创建一个索引并为每个人添加一个名称。但是,当我的循环首次运行时,它会跳过构成第一个索引的行。接下来运行得很好。是什么原因和/或是我使这种方法失效的方法?

主类:

DecimalFormat f = new DecimalFormat("##.00");
Scanner scan = new Scanner(System.in);

double costItem;
int numPeopleIn;
Person[] people;
int y;

System.out.println("Welcome to Pizza Cost!\nTo start, how many people are in on this order?");

people = new Person[scan.nextInt()];

System.out.println("Type their names, pressing ENTER between names.");
for (int x = 0; x<people.length; x++) {
    System.out.println("ran");
    people[x] = new Person();
    people[x].name = scan.nextLine();
    System.out.println("hit the end");
}

人类:

package me.chris.pizzacost;
public class Person {

String name = "blank";
double cost;

}

非常感谢, -Chris

1 个答案:

答案 0 :(得分:0)

初始化阵列后,您需要使用额外的新行

people = new Person[scan.nextInt()];
scan.nextLine(); // ignored

这是因为nextInt()仅返回给您的人数(实际int)并在其后面按下enter,然后通过扫描对您的程序进行干扰for循环的第一次迭代。