无法在此日期和月份方法中正确获取 return - Android Studio
Cannot get return right in this date and month method - Android Studio
我一直在摆弄我创建的这个方法,但无法让它发挥作用。
我得到的字符串无法转换为 int 或需要一个 return,但是我无法在 return 语句中输入 monthString
变量,因为它超出了序数方法的范围并且不能找到变量。
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.Calendar;
/**
* Created by avi31 on 31/01/2018.
*/
import android.app.DatePickerDialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Calendar;
public class ProfileSettings extends AppCompatActivity {
private static final String TAG = "Profile_Settings";
private DatePickerDialog.OnDateSetListener mDateSetListener;
private TextView mDisplayDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
mDisplayDate = (TextView) findViewById(R.id.tvDate);
mDisplayDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(
ProfileSettings.this,
android.R.style.Theme_Holo_Light_Panel,
mDateSetListener,
year, month, day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month = month + 1;
Log.w(TAG, "Date of Birth: " + day + "/" + month + "/" + year);
String date = day + "/" + month + "/" + year;
mDisplayDate.setText(date);
Toast.makeText(ProfileSettings.this, date, Toast.LENGTH_LONG).show();
ordinal(day, month, year);
}
String ordinal(int day, int month, int year) {
String[] day1 = new String[]{"th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"};
String monthString = "Default";
switch (day % 100) {
case 11:
case 12:
case 13:
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
}
}
Log.w(TAG, day + "" + day1[day % 10] + " " + monthString + " " + year);
return day + monthString + year;
}
public void buttonClicked(View view) {
if (view.getId() == R.id.btn_exit) {
finish();
Log.w(TAG, "Exit back to previous activity");
}
}
};
}
您正在 case13 中声明变量 month 字符串,就在第二个 switch 语句之前,移动并初始化第一个 switch 语句之外的 monthString 变量。
String monthString;
是在 switch 语句中定义的,因此范围有限。把它移到外面就可以了。
将它移到您定义 day1
数组的行之后。
String ordinal(int day, int month, int year) {
String[] day1 = new String[]{"th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"};
String monthString = ""; //declare here
switch (day % 100) {
case 11:
case 12:
case 13:
Log.w(TAG, day + "th");
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
}
break; //you're missing this break after the case
}
return day + monthString;
}
我一直在摆弄我创建的这个方法,但无法让它发挥作用。
我得到的字符串无法转换为 int 或需要一个 return,但是我无法在 return 语句中输入 monthString
变量,因为它超出了序数方法的范围并且不能找到变量。
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.Calendar;
/**
* Created by avi31 on 31/01/2018.
*/
import android.app.DatePickerDialog;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Calendar;
public class ProfileSettings extends AppCompatActivity {
private static final String TAG = "Profile_Settings";
private DatePickerDialog.OnDateSetListener mDateSetListener;
private TextView mDisplayDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
mDisplayDate = (TextView) findViewById(R.id.tvDate);
mDisplayDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(
ProfileSettings.this,
android.R.style.Theme_Holo_Light_Panel,
mDateSetListener,
year, month, day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month = month + 1;
Log.w(TAG, "Date of Birth: " + day + "/" + month + "/" + year);
String date = day + "/" + month + "/" + year;
mDisplayDate.setText(date);
Toast.makeText(ProfileSettings.this, date, Toast.LENGTH_LONG).show();
ordinal(day, month, year);
}
String ordinal(int day, int month, int year) {
String[] day1 = new String[]{"th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"};
String monthString = "Default";
switch (day % 100) {
case 11:
case 12:
case 13:
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
}
}
Log.w(TAG, day + "" + day1[day % 10] + " " + monthString + " " + year);
return day + monthString + year;
}
public void buttonClicked(View view) {
if (view.getId() == R.id.btn_exit) {
finish();
Log.w(TAG, "Exit back to previous activity");
}
}
};
}
您正在 case13 中声明变量 month 字符串,就在第二个 switch 语句之前,移动并初始化第一个 switch 语句之外的 monthString 变量。
String monthString;
是在 switch 语句中定义的,因此范围有限。把它移到外面就可以了。
将它移到您定义 day1
数组的行之后。
String ordinal(int day, int month, int year) {
String[] day1 = new String[]{"th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th"};
String monthString = ""; //declare here
switch (day % 100) {
case 11:
case 12:
case 13:
Log.w(TAG, day + "th");
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
case 4: monthString = "April";
break;
case 5: monthString = "May";
break;
case 6: monthString = "June";
break;
case 7: monthString = "July";
break;
case 8: monthString = "August";
break;
case 9: monthString = "September";
break;
case 10: monthString = "October";
break;
case 11: monthString = "November";
break;
case 12: monthString = "December";
break;
}
break; //you're missing this break after the case
}
return day + monthString;
}