выберите случай для проверки диапазона десятичного числа

Я предпочитаю не обрабатывать состояние самостоятельно, поэтому я реализовал класс, который делает это для меня.

package mypackage;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

// Mine extends AppCompatActivity - your's might need to extend Activity, depending on whether
// you use the support library or not.
public class StateTrackingActivity extends AppCompatActivity {

    public enum ActivityState {

        CREATED, RESUMED, STARTED, PAUSED, STOPPED, DESTROYED
    }

    private ActivityState _activityState;

    protected ActivityState getActivityState() { return _activityState; }

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        _activityState = ActivityState.CREATED;
    }

    @Override
    protected void onResume() {

        super.onResume();
        _activityState = ActivityState.RESUMED;
    }

    @Override
    protected void onStart() {

        super.onStart();
        _activityState = ActivityState.STARTED;
    }

    @Override
    protected void onPause() {

        super.onPause();
        _activityState = ActivityState.PAUSED;
    }

    @Override
    protected void onStop() {

        super.onStop();
        _activityState = ActivityState.STOPPED;
    }

    @Override
    protected void onDestroy() {

        super.onDestroy();
        _activityState = ActivityState.DESTROYED;
    }
}

Тогда ваша деятельность может продлить этот, и вы можете получить состояние, позвонив getActivityState().

6
задан ChrisW 17 June 2009 в 22:53
поделиться

7 ответов

    Select Case aa
        Case 1 To 1.49
            MsgBox(1)
        Case 1.5 To 2
            MsgBox(2)
        Case Else
            MsgBox("was lower than 1 or higher than 2 or between 1.49 and 1.5")
    End Select

это (ниже) перейдет в случай, иначе

   Dim aa As Double = 1.499

это (ниже) перейдет в случаи с 1 по 1,49

   Dim aa As Double = 1.4

это (ниже) перейдет в случаи с 1,5 по 2

   Dim aa As Double = 1.78

другой способ сделать это: Отсюда

    Select Case value
        Case Is <= 49.99
            Debug.WriteLine("first group")
        Case Is <= 99.99
            Debug.WriteLine("second group")
        Case Is <= 199.99
            Debug.WriteLine("third group")
        Case Else
            Debug.WriteLine("fourth group")
    End Select

и, возможно, тоже:

    Select Case true
        Case (value >= 0 andalso value <= 49.99)
            Debug.WriteLine("first group")
        Case (value >= 50 andalso value <= 99.99)
            Debug.WriteLine("second group")
        Case (value >= 100 andalso value <= 199.99)
            Debug.WriteLine("third group")
        Case Else
            Debug.WriteLine("fourth group")
    End Select
24
ответ дан 8 December 2019 в 02:14
поделиться

Я сомневаюсь, что вы сформулировали этот вопрос так, чтобы точно сказать, что вы имеете в виду. Вы действительно хотите, чтобы первая группа включала только 0–49,99? Или вы действительно имеете в виду от 0 до 50, но не включая 50, и вы просто ожидаете, что ваш ввод будет иметь 2 десятичных знака или меньше? Если вы хотите сгруппировать числа, скажем, по пятидесяти, то очень странно писать:

Select Case value
    Case Is <= 49.99
        Debug.WriteLine("49.99 or less")
    Case Is <= 99.99
        Debug.WriteLine("greater than 49.99, 99.99 or less")
    ' ... and so on '
End Select

Число 49.995 здесь попадает во вторую группу, что кажется нелогичным. Выбор двух десятичных знаков в качестве точки отсечки является произвольным.

Оператор '<=' здесь не подходит; используйте оператор '<'; это имеет гораздо больший смысл:

Select Case value
    Case Is < 50
        Debug.WriteLine("less than fifty")
    Case Is < 100
        Debug.WriteLine("fifty or greater, less than 100")
    ' ... and so on '
End Select
6
ответ дан 8 December 2019 в 02:14
поделиться
 Dim value As Double = 133.5
        Select Case value
            Case Is <= 49.99
                Debug.WriteLine("first group")
            Case Is <= 99.99
                Debug.WriteLine("second group")
            Case Is <= 199.99
                Debug.WriteLine("third group")
            Case Else
                Debug.WriteLine("fourth group")
        End Select

Куда в вашем вопросе попадают значения 49,992? Поскольку вы сказали 0-49,99, а затем 50-99,99, что-то между 49,99 и 50, куда это денется? В моем примере выше он будет включен в один из вариантов, так что это значения от 0 до 49,99, значения от 49,99 до 99,99 и т. Д. И т. Д.

6
ответ дан 8 December 2019 в 02:14
поделиться

AlbertEin что-то зацепил, но чтобы сделать целочисленное деление в VB.Net, вы должны написать это так:

Dim range as Integer
range = someInteger \ 50

Обратите внимание на символ обратного деления. Оттуда вы можете Выбрать диапазон случаев .

Но на самом деле ответ jvanderh больше всего выражает то, что вы хотите сделать, потому что он позволяет легко добавлять кейсы в будущем, которые не разбиваются на кратные 50 и не требуют от будущих сопровождающих следовать математике или знать об операторе \.

3
ответ дан 8 December 2019 в 02:14
поделиться
Dim range as Integer
range = someInteger / 50
'So, if range = 0 is 0-49.99, if it's 1 it's 50 to 99.99, etc
2
ответ дан 8 December 2019 в 02:14
поделиться

Почему бы вам не попробовать if / then / else? Они эквивалентны, и я не уверен, может ли оператор case в VBasic обрабатывать нецелочисленные значения.

1
ответ дан 8 December 2019 в 02:14
поделиться

Я бы сделал это так: я использую #, чтобы явно указать, что значения имеют тип "double".

   Dim input As Double = 2.99

    Select Case input
        Case 0.0# To 49.99#
            Response.Write("Between 0 to 49.99")
        Case 50.0# To 99.99#
            Response.Write("Between 50 and 99.99")
        Case Else
            Response.Write("The value did not fall into a range.")
    End Select
1
ответ дан 8 December 2019 в 02:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: