当前位置: 首页 > 知识库问答 >
问题:

在if语句中获取错误

广瑞
2023-03-14

我只是想把字符串按降序排序。用户提供的输入为10,a,1,#,15,。,6输出必须为10,a,15,#,6,。,1我已经试过了。

String input = JOptionPane.showInputDialog("Enter a string:");
String[] num = input.split(",");
ArrayList<String> arr = new ArrayList<>();

 System.out.println(num);
  for ( int i = 0; i < num.length - 1; i ++ )  
   {
    for (int j = i + 1; j < num.length; j ++ )
     {
       if(Integer.parseInt(num[i]) 
       && Integer.parseInt(num[j])  
        && num[i] < num[j])  {
          String temp = num[ i ];   //swapping
           num[ i ] = num[ j ];
           num[ j ] = temp;
            }
            }           
      } 
     }

在if语句中,我得到错误。错误:-操作员

共有3个答案

乜坚成
2023-03-14

第一件事是编译代码:回想一下整数。parse返回整数,因此不能在逻辑表达式序列中使用它。

然后,您应该提高代码的效率:将num[i]的解析移到循环之外,并在解析失败时跳过循环,如下所示:

for ( int i = 0; i < num.length - 1; i ++ ) {
    int numI;
    try { numI = Integer.parse(num[i]); } catch (NumberFormatException nfe) { continue; }
    for (int j = i + 1; j < num.length; j ++ ) 
        int numJ;
        try { numJ = Integer.parse(num[i]); } catch (NumberFormatException nfe) { continue; }
        if (numI < numJ) {
            String temp = num[ i ];   //swapping
            num[ i ] = num[ j ];
            num[ j ] = temp;
        }
    }
}

现在,当解析num[i]失败时,程序跳过嵌套循环,转到下一个字符串。

晏树
2023-03-14

您应该从以下位置更改if:

Integer.parseInt(num[i]) 
   && Integer.parseInt(num[j])  
    && num[i] < num[j]

到:

Integer.parseInt(num[i]) 
   < Integer.parseInt(num[j])  
   ^^^
    && num[i].compareTo(num[j]) < 0
              ^^^^^^^^^

如果你想比较两个数字,你可以比较小于/大于和/或等于。你可以申请

另请注意,如果任何数字不能解析为整数,那么您可能会得到NumberFormatException。所以我建议您首先识别输入,然后使用api将其转换为数字。

钱经业
2023-03-14

你可以代替

   if(Integer.parseInt(num[i]) 
      && Integer.parseInt(num[j])  
      && num[i] < num[j])  {

   if(Integer.parseInt(num[i])  <
      Integer.parseInt(num[j])) {  

但是,如果其中一个字符串不能被解析为整数,您将获得NumberFormatException。

 类似资料:
  • 问题内容: i=0 for f in do echo “i value is $i” if [“$i” = “0”] then echo “here” i=$((i+1)) continue fi arr[i]=$f i=$((i+1)) done 在上面的bash脚本中,我在使用if语句时出现了一个错误,它看起来像这样 请指出我的错误。 问题答案: 采用 在bash,你需要周围的空间,并在条件

  • 目前遇到此语法错误,错误发布在代码下方。 上面的代码,无法找出if语句上的语法错误。错误消息将很快粘贴为注释

  • 我对if else语句有些问题,请支持

  • 我正在从事一个项目,其中我想通过JSON和PHP将用户数据传递到在线数据库。当我在swift的XCode 6(旧版本)中工作时,此代码没有生成错误,但现在它正在生成错误 “(NSData!, NSURL响应!, NSError!)- 我想这是一个语法错误,在 swift 中使用了新的可选和强制类型运算符。 这是我的代码:

  • 我们可以像这样使用if-field: 但是这里有一些问题,我不明白为什么。 > 如果我运行(count已定义),则会引发错误: 我们能不能先分配一个值? 当我运行count=1 if False else l.append(count 1)(注意:count=0,l=[])时,将引发一个错误: l的结果是。 使用相同的条件,如果使用if-else块,则不会出现错误。 你能解释一下区别吗?

  •  if 语句,就是类似于「如果○○的话,做●●」,根据条件判断脚本的一部分是否执行的语法。  语法如下: if(expression) 语句或语句块 else 语句或语句块  第一个“语句或语句块”是当 expression 表达式的结果为真时执行的部分,第二个“语句或语句块”则是结果为假时执行的部分。如果不需要 else 以后的部分,可以省略。 例: if(a==b) inform("a和b相等