Reputation: 395
Im trying to show the day name along with the date in my app and the text defined as "text" shows up fine and integer values also show up fine, but it will not show a text variable, this is what I have:
Calendar now = Calendar.getInstance();
TextView output3 = (TextView) findViewById(R.id.output3);
int dayno = now.get(Calendar.DAY_OF_WEEK);
String dayName = new String();// also tried String dayName = ""; with the same results
if (dayno == 1) dayName = "Sun";
if (dayno == 1) dayName = "Mon";
if (dayno == 1) dayName = "Tue";
if (dayno == 1) dayName = "Wed";
if (dayno == 1) dayName = "Thu";
if (dayno == 1) dayName = "Fri";
if (dayno == 1) dayName = "Sat";
also tried it like this:
if (dayno == 1) {dayName = "Sun";}
if (dayno == 1) {dayName = "Mon";}
if (dayno == 1) {dayName = "Tue";}
if (dayno == 1) {dayName = "Wed";}
if (dayno == 1) {dayName = "Thu";}
if (dayno == 1) {dayName = "Fri";}
if (dayno == 1) {dayName = "Sat";}
output3.setText(hour + ":" + minute + ":" + second + " Week " + weekno + ", " + dayName + ", " + yearno);
this is the result I am getting (middle text field has the error)
I can't figure out what could be wrong here, any help would be appreciated
Upvotes: 2
Views: 632
Reputation: 2652
Please change your code as follows:
Calendar now = Calendar.getInstance();
TextView output3 = (TextView) findViewById(R.id.output3);
int dayno = now.get(Calendar.DAY_OF_WEEK);
String dayName = new String();// also tried String dayName = ""; with the same results
if (dayno == 1) dayName = "Sun";
if (dayno == 2) dayName = "Mon";
if (dayno == 3) dayName = "Tue";
if (dayno == 4) dayName = "Wed";
if (dayno == 5) dayName = "Thu";
if (dayno == 6) dayName = "Fri";
if (dayno == 7) dayName = "Sat";
Upvotes: 1
Reputation: 48258
You can by the way use the class DateFormatSymbols and with this avoid to re invent the wheel
Calendar now = Calendar.getInstance();
int dayno = now.get(Calendar.DAY_OF_WEEK);
String[] weekdays = new DateFormatSymbols().getWeekdays();
System.out.println(weekdays[dayno]);
, but lets go back to your question
You have this in the code
if (dayno == 1) dayName = "Sun";
if (dayno == 1) dayName = "Mon";
but what if dayno is not 1?? then dayName is empty... you have a copy/paste error
You meant for sure:
if (dayno == 1) {
dayName = "Sun"
} else if (dayno == 2) {
dayName = "Mon";
}...
etc etc
Upvotes: 0
Reputation: 101
Use SWITCH to perform this.
Calendar now = Calendar.getInstance();
String dayName;
TextView output3 = (TextView) findViewById(R.id.output3);
int dayno = now.get(Calendar.DAY_OF_WEEK);
switch(dayno){
case 1: dayName = "Sunday"; break;
case 2: dayName = "Monday"; break;
case 3: dayName = "Tuesday"; break;
case 4: dayName = "Wednesday"; break;
case 5: dayName = "Thursday"; break;
case 6: dayName = "Friday"; break;
case 7: dayName = "Saturday"; break;
}
Upvotes: 0
Reputation: 3036
All your if clauses check if dayno
is 1
. Change them to the right values or use a switch statement and it should work fine. A switch statement for that would look like this:
switch(dayno) {
case Calendar.SUNDAY:
dayName = "Sun";
break;
case Calendar.MONDAY:
dayName = "Mon";
break;
case Calendar.TUESDAY:
dayName = "Tue";
break;
case Calendar.WEDNESDAY:
dayName = "Wed";
break;
case Calendar.THURSDAY:
dayName = "Thu";
break;
case Calendar.FRIDAY:
dayName = "Fri";
break;
case Calendar.SATURDAY:
dayName = "Sat";
break;
}
Upvotes: 0
Reputation: 191728
Don't use a switch or many if statements, print your time appropriately using a SimpleDateFormat
Calendar now = Calendar.getInstance();
DateFormat df = DateFormat.getDateTimeInstance();
// Or... df = new SimpleDateFormat("SOME-TIME-FORMAT");
String nowSting = df.format(now.getTime());
textView.setText(nowString);
I believe your format is something like this
hh:mm:ss Week w, EEE, yyyy
Upvotes: 0
Reputation: 76
@Leon is right. You want something like this:
int dayno = now.get(Calendar.DAY_OF_WEEK);
String dayName = new String();
switch(dayno) {
case 1: dayName = "Sun"; break;
case 2: dayName = "Mon"; break;
case 3: dayName = "Tue"; break;
case 4: dayName = "Wed"; break;
case 5: dayName = "Thu"; break;
case 6: dayName = "Fri"; break;
case 7: dayName = "Sat"; break;
default: dayName = "dayno is not [1, 7]"; break;
}
Assuming Sunday is 1...
Upvotes: 0
Reputation: 17580
Your days number are same in if condition. Write your condition properly.Use Switch
instead.
Upvotes: 1