Wraithious
Wraithious

Reputation: 395

String value not showing in output.setText

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) enter image description here

I can't figure out what could be wrong here, any help would be appreciated

Upvotes: 2

Views: 632

Answers (7)

Sanjeev Saha
Sanjeev Saha

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

You can by the way use the class DateFormatSymbols and with this avoid to re invent the wheel

Example:

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

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

Leon
Leon

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

OneCricketeer
OneCricketeer

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

omkarmoghe
omkarmoghe

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

T_V
T_V

Reputation: 17580

Your days number are same in if condition. Write your condition properly.Use Switch instead.

Upvotes: 1

Related Questions