我试图通过逐字符解析字符串并找到整个float或int来识别float vs int。如果我找到了'。'然后我不希望这在循环条件下。
我想做这样的事情:
do
{
if((char) nextChar == '.')
reachedDot = true;
integer += (char) nextChar;
readChar();
} while(// if(reachedDot){
// Character.isDigit(nextChar) }
// else { (Character.isDigit(nextChar) || nextChar == '.')});
答案 0 :(得分:0)
将两个条件与或组合:
} while((reachedDot && Character.isDigit(nextChar)) ||
(!reachedDot && (Character.isDigit(nextChar) || nextChar == '.')));
这样,在reachedDot
为真的情况下,检查您的第一个条件。如果reachedDot
为假,则检查您的第二个条件。
答案 1 :(得分:0)
三元运算符应该这样做:
do
{
if((char) nextChar == '.')
reachedDot = true;
integer += (char) nextChar;
readChar();
} while (reachedDot ? Character.isDigit(nextChar) : ((Character.isDigit(nextChar) || nextChar == '.'));
当然,这可以使用一些布尔代数进行简化,因为Character.isDigit(nextChar)
应该始终使循环继续:
do
{
if((char) nextChar == '.')
reachedDot = true;
integer += (char) nextChar;
readChar();
} while (Character.isDigit(nextChar) || (!reachedDot && nextChar == '.'));
答案 2 :(得分:0)
对于这样一个简单的问题,其他答案看起来非常技术性,所以如果你觉得它太基本了就不要理解。
如果您接受来自扫描仪的输入,则可以使用genericfooinput.hasNextInt()
检查用户输入是否为Int。如果它返回true,那么你可以继续你的循环。
if(myVariable.hasNextInt() == true) {
int input = myVariable.nextInt();
}
答案 3 :(得分:0)
你可以用两个循环来做到这一点。第一个循环读取数字,直到没有剩余数字。然后你看下一个角色。如果它不是一个点,那么你就完成了。如果它是一个点,那么你运行第二个循环,读取数字,直到没有剩下,然后在最后将所有内容粘贴在一起。