感谢您提出的建议,这是我第一次使用stackoverflow,因为我对编程很新。我遇到的问题是我的程序在执行while循环后没有要求输入名称。具体来说,它似乎不会在循环后执行此行。 System.out.print(“输入节食者姓名:”); String name = input.nextLine(); 有人可以解释我可能错过使用扫描仪实用程序。
import java.util.*;
/**
* CS-12J
* Sweetner.java
* Purpose:
*
* @version 1.0 3/18/13
*/
public class Sweetner {
/**
* The main method begins the execution of the program
*
*@param args not used
*/
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
String again = "yes";
while (again.equals("yes")) {
System.out.print("Enter the dieter's name: ");
String name = input.nextLine();
System.out.print("Enter the target weight of the dieter in pounds: ");
double weightInPounds = input.nextDouble();
//converts pounds to grams
final double IBS_TO_GRAMS = 453.59;
double weightInGrams = weightInPounds * IBS_TO_GRAMS;
//finds lethal amout of sweetner for mouse
final double MOUSE_WEIGHT = 30.0;
final double LETHAL_DOSE = 100.0;
final double MOUSE_LETHAL_PROPORTION =
(double) LETHAL_DOSE / MOUSE_WEIGHT;
//finds lethal amount of sweetner for human of given weight
double lethalSweetner = MOUSE_LETHAL_PROPORTION * weightInGrams;
//lethal number of cans
final double SODA_SWEETNER = 0.001;
final double SODA_GRAMS = 350;
double lethalCans = lethalSweetner / (SODA_SWEETNER * SODA_GRAMS);
//output
System.out.println("For dieter: " + name);
System.out.println("Dieter's target weight: " + weightInPounds
+ " pounds");
System.out.println("Lethal dose in grams of sweetner is: "
+ lethalSweetner);
System.out.println("Lethal number of cans of soda: "
+ lethalCans);
//extra credit
final int CANS_PER_DAY = 15;
final double DAYS_IN_YEAR = 365.25;
double yearsToLethal = lethalCans / (CANS_PER_DAY * DAYS_IN_YEAR);
System.out.println("Years to lethal dose: " + yearsToLethal);
System.out.print("Do you want to repeat the program? yes or no\n\t\t");
again = input.next();
}
}
}
答案 0 :(得分:4)
使用next()而不是nextLine()来获取名称:
String name = input.next(); // to get the name
nextLine()扫描不可见的换行符,用户输入yes时就是这种情况。所以如果你想避免使用next(),只需输入input.nextLine();在循环结束时使用换行符。
答案 1 :(得分:0)
在循环结束时尝试这个:
again = input.nextLine();
答案 2 :(得分:0)
更改您的
String name = input.nextLine();
到此,它将起作用。
String name = input.next();
答案 3 :(得分:0)
input.nextLine()检索下一个换行符。 在System.out.print()中,您提供了“\ n”,它触发了nextLine()方法。
System.out.print("Do you want to repeat the program? yes or no\n\t\t");
again = input.next();
在第二个语句之前需要另一个input.nextLine(),例如:
System.out.print("Do you want to repeat the program? yes or no\n\t\t");
input.nextLine();
again = input.next();
我希望这能解决你的问题。 :)
答案 4 :(得分:0)
如果节食者的姓名不能为空
System.out.print("Enter the dieter's name: ");
String name = scanLine.apply( input );