2013-04-28 74 views
0

“if”语句只允许在其中放入数字。 有没有办法让它读取字母? 我只在我的Java第五课(我学习单一,老师很慢,但我想快速学习东西)如何设置语句以读取字母而不是数字?

例如。

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

     Scanner scan = new Scanner(System.in); 
     int answer1; 
     System.out.println("Do you like Java?"); 
     answer1 = scan.nextInt(); 
     if (answer1 == yes) 
     System.out.println("Cool ~"); 
     else 
     System.out.println("Ehh..."); 
    } 
} 

我希望把“是”,而不是数字5 所以,如果用户键入“是”会打印出“正确”。

P.S.我在搜索引擎中没有找到明确的答案。 这不是一个重复的线程,因为我试图找到明确的答案。 我需要关于它的详细解释。 我还是个初学者,用那些“高科技java语言”不会帮助我。

+0

这是好多了 - 一个很小的代码,完整的例子说明了这个问题(在Java中这通常是使用'main'方法和任何进口的最小可能类,这正是你所得到的)。 – Flexo 2013-04-28 13:27:17

+0

那么我现在该做什么?大声笑它给出了一个错误,并标记为“是”,就好像它不是一个有效的单词。 – Luminous 2013-04-28 13:34:35

+0

它编译和运行在我的机器上,并在:http://ideone.com/3dFevM - 也许你错过了报价标记? – Flexo 2013-04-28 13:37:07

回答

2

您需要修改程序,使扫描仪读取String而不是int。你能做到这一点的:

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

     Scanner scan = new Scanner(System.in); 
     String answer1; 
     System.out.println("Do you like Java?"); 
     answer1 = scan.next(); 
     if (answer1.equals("yes")) 
     System.out.println("Cool ~"); 
     else 
     System.out.println("Ehh..."); 
    } 
} 

我以前next()这个,因为我们只需要一个字(令牌),但要知道,有阅读弦乐其他选项。

还请注意,我已经改变了测试中的条件,因为它现在是一个String。见this answer for more on comparing Strings

+0

哦!现在我懂了!谢谢谢谢!我不仅复制粘贴它,我也从中学到了:)基本上我需要将int转换为String,将“==”转换为“equals”:D谢谢!接受了这个答案。顺便说一句,如果我想用3个字例如?例如“是”或“是”或“是”,我该怎么做? lol – Luminous 2013-04-28 13:38:36

+0

@发光的完整性你需要使用'.equals',因为'String',但不能'int'的原因是因为'int'是一个基元,但是'String'是一个Object。 – Flexo 2013-04-28 13:41:04

+0

好吧,很酷,我学到了另外一件事:P – Luminous 2013-04-28 13:42:34

1

您需要修改程序,以便扫描器读取字符串而不是int。你能做到这一点的:

进口java.util.Scanner的;公共类的Java { 公共静态无效的主要(字串[] args){

Scanner scan = new Scanner(System.in); 
    String answer1; 
    System.out.println("Do you like Java?"); 
    answer1 = scan.next(); 
    if (answer1.equals("yes")) 
    System.out.println("Cool ~"); 
    else 
    System.out.println("Ehh..."); 
} } 

我用的next()这个,因为我们只需要一个字(令牌),但要知道,有阅读其他选项字符串。

还请注意,我已经改变的条件下测试,因为它是现在 一个字符串。有关比较字符串的更多信息,请参阅此答案。

好吧,如果你想要的程序读取两个单词和数字内容: 这是我的计划(更深入,当你看到完整的东西),但是这是第5个部分之一(即看起来像),在那里我有计划...

public static void Gdr1() { 
     try { 
      System.out.print("[Code: Gdr1] Grade 1: %"); 
      Scanner gdr1 = new Scanner(System.in); 
      Z = gdr1.next(); 
      Z = Double.toString(Grd1); 
      Grd1 = Double.parseDouble(Z); 
      if ((Grd1<100)&&(Grd1>=5)) { 
       Gdr2(); 
      } else if ((Grd1>=100)&&(Grd1<125)) { 
       System.out.println(" System> Great Job "+Stu+"!"); 
       Gdr2(); 
      } else if (Grd1<5) { 
       System.out.println("I'm sorry, the lowest grade I am allowed to compute is 5..."); 
       Gdr1(); 
      } else if (Z.equalsIgnoreCase("restart")) { 
       restart01(); 
      } else { 
       System.out.println("("+Z+") cannot be resolved in my system..."); 
       Gdr1(); 
      } 
     } catch (Exception e) {} 
    } 

现在一切正常,在节目中,除了为当最终用户的输入= "restart",我知道有一些在程序代码的看起来很复杂,但它确实有效(大部分),任何人都可以帮助我解决这个问题,在2017年1月25日下午11:59之前在我的学校进行投资组合。

Z(常量字符串)的东西,""+Stu+""(可变输入),和[Code: Gdr1]是有目的的...

相关问题