- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
你好,我也是 Java 新手,正在学习如何构建 Android 应用程序。我有一个我一直在研究的计算器,我需要帮助来弄清楚如何为 EditText 设置值。当用户在 EditText 中输入 CA、O
我是一名优秀的程序员,十分优秀!