在循环迭代中途改变循环条件

时间:2014-04-08 22:54:53

标签: java string

我试图通过逐字符解析字符串并找到整个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 == '.')});

4 个答案:

答案 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)

你可以用两个循环来做到这一点。第一个循环读取数字,直到没有剩余数字。然后你看下一个角色。如果它不是一个点,那么你就完成了。如果它一个点,那么你运行第二个循环,读取数字,直到没有剩下,然后在最后将所有内容粘贴在一起。

相关问题