数组出现意外类型错误

时间:2016-02-26 19:51:31

标签: java

我有一个实验室,我必须为我的计算机课做,我有一个我似乎无法弄清楚的错误。我在第一个#!/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

4 个答案:

答案 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.