gpt4 book ai didi

java - 应用程序忽略 Scanner.nextLine() 方法之后的输入

转载 作者:行者123 更新时间:2023-12-02 06:54:37 24 4
gpt4 key购买 nike

我是java新手,我决定编写一个简单的程序来练习IF。这是它应该做的事情:

  1. 询问用户有关货币的信息。
  2. 询问用户想要转账的金额。
  3. 计算佣金率并向用户显示详细信息。
  4. 请求用户确认;如果他输入“y”,程序应该打印“A”。如果他输入“n”,程序应该打印“B”。

代码如下:

import java.util.Scanner;

public class CommissionRate {

static String Confirm;
static byte CommissionRate=10;
static String Commission="1%.";
static double TotalCost;
static double MoneyAmount;
static byte CurrencyNum;
static char CurrencySign;
static Scanner sc = new Scanner(System.in);
public static void Currency(){

System.out.println("Please choose your desired currnecy.");
System.out.println("1.USD");
System.out.println("2.EUR");
System.out.println("3.GBP");
System.out.println("4.CAD");
System.out.println("5.CNY");
System.out.println("6.JPY");
CurrencyNum = sc.nextByte();
if (CurrencyNum==1|CurrencyNum==4) {

CurrencySign= '$';
}
else {

if (CurrencyNum==2){

CurrencySign='€';
}
else {
if (CurrencyNum==3){

CurrencySign='£';
}
else {
if (CurrencyNum==5|CurrencyNum==6){

CurrencySign='¥';
}
}
}
}
}
public static void MoneyAmount() {

System.out.println("Please enter the amount of money you would like to transfer :");
MoneyAmount = sc.nextDouble();
if (MoneyAmount>499 & MoneyAmount<10000){
CommissionRate=5;
Commission="0.5%.";
}
else{
if (MoneyAmount>10000){
CommissionRate= 3;
Commission="0.3%.";
}
}
TotalCost = MoneyAmount + MoneyAmount * CommissionRate/1000;
System.out.println("Please confirm the transfer. ( y/n ) ");
System.out.println("A transfer of "+MoneyAmount+CurrencySign+".");
System.out.println("Commission rate is "+Commission);
System.out.println("You need to pay " + TotalCost+"." );
sc.nextLine();
Confirm = sc.nextLine();
if (Confirm=="y"){
System.out.println("A");
}
else if (Confirm=="n") {
System.out.println("B");
}
}
}

首先,程序不会等待用户确认/中止传输,而是打印“B”。然后,我读到this并添加了“sc.nextLine()”。然而,程序只是忽略最后一个 if 并且不打印任何内容。关于导致问题的原因以及如何解决它有什么想法吗?

p.s.:这是我运行程序时得到的结果:

Please choose your desired currnecy.
1.USD
2.EUR
3.GBP
4.CAD
5.CNY
6.JPY
2 // my input
Please enter the amount of money you would like to transfer :
120 // my input
Please confirm the transfer. ( y/n )
A transfer of 120.0€.
Commission rate is 1%.
You need to pay 121.2.
y // my input

最佳答案

请尝试

if (Confirm.equals("y")){

else if (Confirm.equals("n"))

使用 == 比较对象引用而不是值。

关于java - 应用程序忽略 Scanner.nextLine() 方法之后的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17545689/

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