我有一个实验室,我必须为我的计算机课做,我有一个我似乎无法弄清楚的错误。我在第一个#!/bin/bash
#set csv file to variable
mycsv="/path/csv.csv"
#get the third value of the first line after sorting on the third value descending.
max_val=$(sort -t, -k3,3nr $mycsv | head -n1 | cut -f3)
#use awk to evaluate the thrid column is equal to the maxvalue then print the first column.
#Note I am setting the delimiter to a comma here with the -F flag
awk -F"," -v awkmax="$maxval" '$3 == awkmax {print $1}' $mycsv
语句if
上收到错误。我想将其他if(something.indexOf(x) = "a")
语句更改为该格式。
我得到的错误是:
意外类型 必需:变量:找到;值
if
答案 0 :(得分:3)
问题似乎在这里:if(something.indexOf(x) = "a")
x
处的字符,您需要使用charAt()
。 ==
(比较运算符)来代替赋值运算符。char
进行比较,而不是String
,因为charAt()
会返回一个字符。因此,将"a"
更改为'a'
。所以你的陈述最终应该是这样的:
if(something.charAt(x) == 'a')
答案 1 :(得分:1)
if(something.indexOf(x) = "a")
,=
是赋值运算符。除非赋值产生布尔值,否则在if语句中需要==
运算符。
另外,indexOf()
会返回int
,因此您无法将==
与"a"
一起使用,请使用equals()
进行字符串比较。
java if语句不像c或c ++那样工作。
答案 2 :(得分:0)
Ramanlfc说使用==而不是=是正确的,因为只有一个等号是一个赋值运算符。
但是,我不确定你的IF语句是否按照你的意愿行事。 indexOf()方法返回一个整数,你试图使用==(等于)将它与一个字符串,一个对象进行比较。如果要比较两个字符串,请使用.Equals()方法。你不能在对象上使用==,这就是字符串。但是,您可以在字符上使用==因为它们是原始类型。要指定char,请使用单引号而不是双引号(双引号指定当前如何设置if语句的字符串)。我假设java将使用char的十六进制值将其与数字进行比较。再一次,我不确定你想要实现什么,但只是一些有用的建议!
我假设您需要以下内容: if(stringMsg.charAt(INDEXVALUE)=='a')
这将字符置于字符串中的指定值,并检查它是否与char a相同(等于)。记住字符串中的字符是0到(长度 - 1)。
答案 3 :(得分:0)
问题在于这行代码:
if(something.indexOf(x) = "a") // it should be "==" instead of "="
正确的代码是:
if(something.indexOf(x) == "a")
请注意if(something.indexOf(x) = "a") will always return true in java.