对范围使用if / else语句

时间:2018-10-13 20:10:50

标签: java string if-statement range

我正在使用的代码应用于识别某些东西是否是数字,字母等,并反响正确。

我遇到了无法在char上使用布尔值的错误,因此我将输入的char转换为字符串。

现在我正在使用下面的代码,但不能在字符串上使用数学运算符。我需要使用char作为输入b / c程序,它应该能够识别字母和特殊字符。

我可以改用范围吗?即“ 1-9”和“ a-z”?我已经尝试了几种功能([1-9],“ [1-9]”等),但是我一直收到错误消息。我的猜测是我格式化不正确。

package charreader; 

import java.util.Scanner;
import java.io.*;

public class Charreader {

public static void main(String[] args) throws IOException 
{

Scanner newScan = new Scanner(System.in); 

//prompt for input and read it
System.out.println("Enter a character.");
char ch = (char)System.in.read();

//convert ch to string
String st = String.valueOf(ch);

if (st >= 1 && <= 9 )
{
    System.out.println("Digit");
}

else 
{
   System.out.println("Not a digit.");
}

我唯一要工作的是:

if (st == '0')
{
    System.out.println("Digit");
}

else 
{
   System.out.println("Not a digit.");

但是我不想那样运行整个程序。这将是笨拙的,而且通常是不好的做法。

4 个答案:

答案 0 :(得分:3)

在Java中,我们为此内置了方法。像这样的字符:

.card {
  width: 80%;
  height: 16.5rem;
  border-radius: 5px;
  background-color: #fff;
  text-align: center;
  padding: 0 1.5rem; 
  margin:10rem auto;
}

  .card__inner-wrapper {
    height: 55%;
    position: relative;
    margin: 0 auto;
    display: flex;
    justify-content: center; }
  .card__img {
    height: 100%;
    position: absolute;
    bottom: 50%;
    clip-path: circle(50% at 50% 50%);
    background-color: #fff;
    border: 0.8rem solid #fff; }
  .card__text-content {
    position: absolute;
    top: 6rem; }
  .card__heading {
    font-size: 1.8rem;
    font-weight: 500;
    color: #5fc0c3;
    margin-bottom: 1.5rem; }

即使是字符串,也可以使用以下方法:

char a = 'b';
Character.isDigit(a);
Character.isLetter(a);

编辑:如果您不想使用Character类,我们可以这样做:

public static boolean isNumeric(String str) {
   try {
       int number = Integer.parseInt(str);
       return true;
   } catch (Exception e) {
       return false;
   }
}

答案 1 :(得分:1)

您似乎只想检查它是否为正数。 您可以使用:

Character.getNumericValue()

如果不是数字,则返回-1;如果不是非负整数,则返回-2。像这样:

char ch = (char)System.in.read();
if(ch.getNumericValue() > 0){ 
//"is a pos int"
} else { 
//"not a pos int
}

答案 2 :(得分:1)

您可以使用正则表达式来获得结果。 我建议您阅读this文章,因为他们解释了如何在Java中使用正则表达式。

或者,您可以将char直接转换为int,而不是将char转换为字符串。 示例:

char c='1';  
int a=Character.getNumericValue(c); 

函数getNumericValue将返回一个数字。您需要记住,如果char不是数字,它将引发错误。

让您记住的最后一件事是,在Java中,对String使用单引号('/'),对char使用双引号(“ /”)。

答案 3 :(得分:0)

Java中不存在范围。 而是使用:

if ((symbol >= 'A' && symbol <= 'Z') || symbol == '?') {
// ...
}