Я предпочитаю не обрабатывать состояние самостоятельно, поэтому я реализовал класс, который делает это для меня.
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()
.
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
Я сомневаюсь, что вы сформулировали этот вопрос так, чтобы точно сказать, что вы имеете в виду. Вы действительно хотите, чтобы первая группа включала только 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
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 и т. Д. И т. Д.
AlbertEin что-то зацепил, но чтобы сделать целочисленное деление в VB.Net, вы должны написать это так:
Dim range as Integer
range = someInteger \ 50
Обратите внимание на символ обратного деления. Оттуда вы можете Выбрать диапазон случаев
.
Но на самом деле ответ jvanderh больше всего выражает то, что вы хотите сделать, потому что он позволяет легко добавлять кейсы в будущем, которые не разбиваются на кратные 50 и не требуют от будущих сопровождающих следовать математике или знать об операторе \.
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
Почему бы вам не попробовать if / then / else? Они эквивалентны, и я не уверен, может ли оператор case в VBasic обрабатывать нецелочисленные значения.
Я бы сделал это так: я использую #, чтобы явно указать, что значения имеют тип "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