gpt4 book ai didi

java - 我可以强制控制台将价格和小费保持在同一条线上吗?

转载 作者:行者123 更新时间:2023-11-29 04:31:56 25 4
gpt4 key购买 nike

import java.util.Scanner;
public class Tipping {

public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Please enter initial price followed by tip percentage: ");
double Price = s.nextDouble(); double TipRate = s.nextDouble();
double TipAmount;
TipAmount = (Price*TipRate)/100;
System.out.println("Tip amount: " + TipAmount);
System.out.print("Total price: " + (TipAmount + Price) +".");
}}

我总是在第一行获取价格,在另一行获取小费。

最佳答案

从你的措辞来看,你不喜欢通过扫描仪处理输入,在第一个 double 值(价格)上按 Enter 它会前进到下一行并等待第二个 double 值(小费率) .首先,字符“Enter”本质上是系统相关的换行符,因此当按下回车键时,扫描器会立即拆分输入。具体来说,扫描仪使用 Character.isWhiteSpace(char ch);函数来评估在哪里拆分 token 。

这完全取决于您希望如何处理输入。遗憾的是,如果不导入类似 Curses 的库并使用自定义命令提示符,“\n”字符将无法反转。你可以做的是写下你的输入并用空格分隔,例如写“23.4 12.3”会将输入写在同一行并将该行正确地分成你想要的 2 个标记。

如果纯粹出于美观原因,您可以将 token 捕获为字符串,评估其中是否存在“\n”字符并要求用户在一行中重新输入变量,或者如果“\n” "字符不存在,将字符串拆分为 ""字符,然后使用 Double.valueOf(String str);功能。

注意不要使用 (Scanner in).setDelimiter(String str) 因为这将避免破坏“\n”字符上的标记(如果 str String 是例如“”)并且只会卡住您的程序直到用户使用空格字符拆分 2 个输入,然后抛出 InputMismatchException,因为 12.3\n12.3 32.3 将是“有效”输入,但无法将标记“12.3\n12.3”评估为单个 Double 变量。

关于java - 我可以强制控制台将价格和小费保持在同一条线上吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43470956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com