运营商||未定义参数类型

时间:2016-02-24 06:18:41

标签: java

Java真的让我的括号和变量感到困惑,我知道只需要一些帮助就能理解问题所在并继续使用它。

if(value1=||

错误在哪里。

事先道歉,缩进8个空格似乎也没有正确拉动。帮助,也赞赏...

import java.util.Scanner;
public class WTF {
  public static void main(String[] args) {

    Scanner input =new Scanner(System.in);

    System.out.println("Please enter your Character");
    String value1 =input.toString();


    if (value1 ="a"||"A"||"e"||"E"||"i"||"I"||"o"||"O"||"u"||"U") {
      System.out.print("You entered " +value1);
    }
    else  System.out.print("Consonant");
  }

}

8 个答案:

答案 0 :(得分:3)

你必须分别检查每个字符串:

if (value1=="a"||value1=="A"||value1=="e"||value1=="E"||value1=="i"||value1=="I"||value1=="o"||value1=="O"||value1=="u"||value1=="U")

但是这很可能不起作用,因为==检查对象上的标识而不是相等而String是一个对象。所以你必须这样写:

if (value1.equals("a") || value1.equals("A") || value1.equals("e") || value1.equals("E") || value1.equals("i") || value1.equals("I") || value1.equals("o") || value1.equals("O") || value1.equals("u") || value1.equals("U")

这只是变得痛苦所以你可以通过将value1设置为upercase来减少这种情况,并检查upercase值:

String value1_tmp = value1.toUperCase();
if (value1_tmp.equals("A") || value1_tmp.equals("E") || value1_tmp.equals("I") || value1_tmp.equals("O") || || value1_tmp.equals("U")

这仍然有点难看,所以我们可以通过将其放入方法并使用switch语句来改进它

private static boolean isVowel(String s) {
  switch(s.toUperCase()) {
  case "A":
  case "E":
  case "I":
  case "O":
  case "U":
    return true;
  default:
    return false;
  }
}

然后在if检查中使用此方法:

if (isVowel(value1)) { ...

如果您是regular expressions的粉丝,只需执行以下操作:

if (value1.matches("(?i)[aeiou]")) { ...

这么多选项,只需选择一个:)

编辑:还要修复Djehenghizz提到的内容。而不是

String value1 = input.toString();

DO

String value1 = input.nextLine();

答案 1 :(得分:1)

另外,将http://localhost:8000/partials/feature.html 更改为String value1=input.toString();,因为输入已经是字符串,您无需转换它。

答案 2 :(得分:1)

|| 逻辑OR运算符仅用于组合两个布尔变量或表达式,并返回 true 的结果或者它的两个操作数都是 true

这里你要做的是在两个字符类型之间使用||。所以它实际上会引发编译时错误。

  

检查的正确方法是==>

  Scanner reader = new Scanner(System.in);
  char c = reader.nextChar(); //Correct way to Read Char from Console.

private boolean checkVowel(char c) {
  switch(c) {
  case 'A':
  case 'a'   
  case 'E':
  case 'e'
  case 'I':
  case 'i'
  case 'O':
  case 'o':
  case 'u':
  case 'U':
    return true;
  default:
    return false;
  }
}

答案 3 :(得分:1)

使用以下代码

public static void main(String[] args) {
    List<String> vowelsList = Arrays.asList("a","A","e","E","i","I","o","O","u","U" );
    Scanner input =new Scanner(System.in);

    System.out.println("Please enter your Character");
    String value1 = input.next();


    if (vowelsList.contains(value1)) {
      System.out.print("You entered " +value1);
    }
    else  System.out.print("Consonant");
  }

答案 4 :(得分:0)

尝试

if (value1=="a"||value1=="A"||value1=="e"||value1=="E"||value1=="i"||value1=="I"||value1=="o"||value1=="O"||value1=="u"||value1=="U") //...

或者

if ("aeiouAEIOU".contains(value1))//... 

答案 5 :(得分:0)

String value1 =input.toString();

这意味着使用获取有关输入的信息 - 一个Scanner类的实例,它的目标不是您输入的内容。

你可以使用

String value1 = input.next();

String value1 = input.nextLine();

答案 6 :(得分:0)

布尔运算符用于检查两个布尔变量的值,并在此处返回一个布尔值,您使用运算符来比较两个不兼容的字符串。 如前所述,您使用input.toString方法来获取扫描器类的实例,但它不是comptilbe,而是您可以使用input.Read()或input.ReadLine()。

答案 7 :(得分:0)

对于字符串,您应该使用.equals(“Your Text here”)方法。应该是这样的:

 .trimmed -text{
    height: 15px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
 }

等等。