此代码的目标是简单地找到列表a中的最大值,并将其乘以1.5 第一个输入确定用户输入的数字量。 第二个输入是一个双精度数字。 我已经使用数组来收集我的数字并从中找到最大值。
我写了下面的代码,但是没有得到正确的最大值。 您能告诉我我要去哪里了吗?如果我没有遵循正确的编码方式(因为我还很陌生),也请发表评论。
我的数据是
10
750.55
1555.99
524.12
5268.00
789.4569 // program shows this a max value
1245.78
124.556
175.56
1796.46
7564.994
下面是我的代码:
class Main {
static void main(String[] args) {
Scanner sc = new Scanner(System.in)
def NoofTrans = Integer.parseInt(sc.nextLine())
def Transamt = [NoofTrans]
for (int i = 0; i < NoofTrans; i++) {
Transamt[i]=sc.nextLine()
}
def Creditlimit
println Transamt.max()
Creditlimit=Transamt.max().toDouble()
def Creditlimit1=(Creditlimit*5)
println Creditlimit1
println Creditlimit1.round(2)
}
}
我的输出低于
789.4569
1184.19
应该是
7564.994
11347.49
答案 0 :(得分:0)
有两个问题:
1-您在同一列表中混合了数字和字符串。因此,您找到的最大值未使用数值比较。您需要使用nextDouble()
的扫描仪给您一个号码:
Transamt[i] = sc.nextDouble();
2-您的代码将max乘以5
,而您想将其乘以1.5
。这只是产生了意外的结果。
这是完整的代码:
class MainGroovy {
static void main(String[] args) {
Scanner sc = new Scanner(System.in)
def NoofTrans = Integer.parseInt(sc.nextLine())
def Transamt = [NoofTrans]
for (int i = 0; i < NoofTrans; i++) {
Transamt[i] = sc.nextDouble()
}
println Transamt.max()
def Creditlimit = Transamt.max()
def Creditlimit1 = Creditlimit * 1.5
println Creditlimit1
println Creditlimit1.round(2)
}
}
与您的输入一起执行时,输出为:
7564.994
11347.491
11347.49