Java 字符串值未显示在output.setText中

Java 字符串值未显示在output.setText中,java,android,Java,Android,我试图在我的应用程序中显示日期名称和日期,定义为“text”的文本显示精细,整数值也显示精细,但它不会显示文本变量,这是我的: 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 S

我试图在我的应用程序中显示日期名称和日期,定义为“text”的文本显示精细,整数值也显示精细,但它不会显示文本变量,这是我的:

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";
我也这样试过:

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);
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;
}
这是我得到的结果(中间文本字段有错误)


我想不出这里有什么问题,如果您能提供任何帮助,我们将不胜感激。

您所有的if子句都将检查
dayno
是否为
1
。将它们更改为正确的值或使用switch语句,应该可以正常工作。其switch语句如下所示:


在if条件下,您的天数相同。正确地写下你的条件。改用
开关

你可以顺便使用这个类,这样可以避免重新发明轮子

例子: ,但让我们回到你的问题

代码里有这个

if (dayno == 1) dayName = "Sun";
 
if (dayno == 1) dayName = "Mon";
但是如果dayno不是1呢?? 然后,dayName为空。。。您有一个复制/粘贴错误

你的意思是肯定的:

if (dayno == 1) {
    dayName = "Sun"
} else if (dayno == 2) {
    dayName = "Mon";
}...

等等等等,莱昂是对的。你想要这样的东西:

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);
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;
}

假设星期天是1…

不要使用开关或许多if语句,请使用

我相信你的格式是这样的

hh:mm:ss Week w, EEE, yyyy 

使用开关执行此操作

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;
}

请按以下方式更改您的代码:

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";

这里的教训是,不要将所有代码都写在一行不连贯的代码上,这样您就可以更容易地看到失败的原因(问题已由so的另一个成员编辑,以使其连贯)。现在,我已经编辑了您的代码,使其可读,只需看看那些if语句。投票以打字错误结束。您可以用以下内容替换所有内容:
String dayName=new SimpleDateFormat(“EEE”).format(new Date())
。是的,对不起,伙计们,这是我代码中的一个复制粘贴错误,我在过去12个小时里一直在开发这个应用程序(不是那个问题,tho lol),谢谢大家的建议,simpleDateFormat看起来简单多了。哦,我有一个坏习惯,当我的类超过1000行时,我会使用“单行非相干编码”,这正是发生错误时我遇到麻烦的原因,因为很难捕捉到像这样的简单错误
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";