0

プログラミングにかなり慣れていないので、stackoverflowを初めて使用することを提案していただきありがとうございます。私が抱えている問題は、whileループが実行された後、プログラムが名前を要求しないことです。具体的には、ループの後にこの行を実行しないようです。 System.out.print( "食事療法士の名前を入力してください:"); 文字列名=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();
        }
    }
}
4

5 に答える 5

4

nextLine()の代わりにnext()を使用して、名前を取得します。

String name = input.next(); // to get the name

nextLine()は、ユーザーがyesと入力した場合のように見える、非表示の改行文字をスキャンします。したがって、next()の使用を避けたい場合は、input.nextLine();を配置するだけです。ループの終わりに改行文字を消費します。

于 2013-03-19T02:57:24.650 に答える
0

ループの最後でこれを試してください:

again = input.nextLine();
于 2013-03-19T02:57:36.880 に答える
0

あなたの

String name = input.nextLine();

これに、それは動作します。

String name = input.next();
于 2013-03-19T03:04:27.710 に答える
0

input.nextLine()は、次の改行文字を取得します。System.out.print()で、nextLine()メソッドをトリガーする「\n」を指定しました。

System.out.print("Do you want to repeat the program? yes or no\n\t\t");
again = input.next();

2番目のステートメントの直前に次のような別のinput.nextLine()が必要です。

System.out.print("Do you want to repeat the program? yes or no\n\t\t");
input.nextLine();
again = input.next();

これで問題が解決することを願っています。:)

于 2013-03-19T03:30:43.057 に答える
0

食事療法士の名前が空でない場合

System.out.print("Enter the dieter's name: ");
String name = scanLine.apply( input );

ここでscanLineを見つけます

于 2019-10-06T13:20:14.373 に答える