Solved

Extension of "Detecting a Character" question

Posted on 2004-10-12
13
219 Views
Last Modified: 2010-05-18

Basically the question is answered but i need more...

What i need is to hav a statement that detects if the string has items other than:

any integer, (, ), +, -, / and *.

if any of the above r detected thats ok... anything else is bad

so basically,

if ( not any integer, (, ), +, -, / and *) {
    System.err.println("INVALID");
    System.exit(1);
}
0
Comment
Question by:AnthonyCosenza
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 4
  • 3
13 Comments
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 12288403
String str="Abcd";

if(str.matches("A-Za-z"))
{
//ok
}
else
{
//not ok
}
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 12288445
oops sorry wrong answer
0
 

Author Comment

by:AnthonyCosenza
ID: 12288455
ok, i'm not just worried about characters... i'm worried about things like "#" or "\"

basically any small little piece of text that could cause mischief

Thanks
0
Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 12288569
booleab b=str.matches.(", \\(\\ ) \\+\\ - / \\ *");
if(b)
for(int i=0;i<str.length);i++)
{
  if(!Character.isDigit(str.charAt(i)
  {
      b=false;
        break;  
  }

}

if(b)
//ok
else
//not ok
0
 

Author Comment

by:AnthonyCosenza
ID: 12288630
May i ask wat this line is doin??

if(!Character.isDigit(str.charAt(i)

Thanks again
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 12289218
ignore previous one
try this

    if(str.matches("[0-9\\,\\(\\)\\+\\-\\*]+"))
    {
      System.err.println("ok");
    }
    else
    {
              System.err.println("not ok");
    }
0
 
LVL 14

Assisted Solution

by:sudhakar_koundinya
sudhakar_koundinya earned 250 total points
ID: 12289237
missed / character

This works

if(str.matches("[0-9\\,\\(\\)\\+\\-\\*/]+"))
    {
      System.err.println("ok");
    }
    else
    {
              System.err.println("not ok");
    }
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12290944
>>May i ask wat this line is doin??
>>if(!Character.isDigit(str.charAt(i)

It checks if the character at position i in the String str is a digit
0
 
LVL 37

Accepted Solution

by:
zzynx earned 250 total points
ID: 12291256
Anthony,

I think you want to allow
1) all digits
2) (
3) )
4) +
5) -
6) /
7) *

No commas, right?

Then this is the reg expression:

     if ( !str.matches("[0-9\\(\\)\\+\\-\\*/]+") ) {
        System.err.println("INVALID");
        System.exit(1);
    }

If you want to allow spaces too:  (because now "5 + 6" is invalid)

     if ( !str.matches("[0-9 \\(\\)\\+\\-\\*/]+") ) {
        System.err.println("INVALID");
        System.exit(1);
    }

Remarks:
[1]
This doesn't recognize weird strings like
        String str = "6+*/-5-15*-6"
as invalid.

[2]
All six comments you accepted already are graded with a B.
Is that the maximum grade you'll ever give?
Here at EE, were used to get an A for correct answers/solutions,
a B for answers that helped to find the correct answer/solution and
a C for answers that help a little bit in finding the solution.

Did you know that giving an A-grade doesn't cost *you* any more points than the # originally set, while *we* get more points?
(A=x4, B=x3 and C=x2)
0
 

Author Comment

by:AnthonyCosenza
ID: 12292807
I've only been givin B grades because they are helpful solutions yet they r only parts of a bigger problem...
I had no idea that they affected the points system.

Anyway.. i hav another problem..

I hav something like this

while (st.hasMoreTokens( )) {
    if ( !token.matches("[0-9\\(\\)\\+\\-\\*/]+") ) {
        System.err.println("INVALID EXPRESSION");
        System.exit(1);
    } else {
        System.out.println(token);
        token = st.nextToken( );
    }
}
System.exit(1);

Where i hav a StringTokenizer goin through the string which is in a file...
What happens here is if i hav a expression in the file, for example ( 4 + 3 )..
it prints:

(
4
+
3

.. It doesnt print watever the last item is...

Puzzled..
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12295181
Can you show us what StringTokenizer you use?

Remark:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

Thanks for accepting
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 12295393
Thanks for points :)

zzynx,
The last question was already answered here http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_21165896.html by CEHJ  

;-)
0
 
LVL 37

Expert Comment

by:zzynx
ID: 12295406
>> The last question was already answered
Always handy to know. ;°)
Thanks sudhakar.
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:

687 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question