我在编程上休息了一会儿,我想知道为什么该类没有给我期望得到的正确答案:
public class Date
{
private int _day;
private int _month;
private int _year;
public Date(int day, int month, int year)
{
_day=day;
_month=month;
_year=year;
if((day<1||day>31)&&(month<1||month>12)&&(year<1000||year>9999))
{
_day=26;
_month=2;
_year=2019;
}
}
public String toString()
{
return _day+"/"+_month+"/"+_year;
}
public static void main(String[]args)
{
Date test= new Date(5,13,1999);
System.out.println(test.toString());
}
}
当我将值插入“ test”对象为(32,5,1999)时,它会打印出来 26.2.2019。 当我将值插入为(5,14,1999)时,它将输出5.14.1999, 当我将值插入为(5,6,900)时,它将输出为5.8.900。 当用户输入非法值(26.2.2019)时,为什么不能获得在构造函数中设置的默认值。 谢谢您的回答:)
答案 0 :(得分:1)
问题出在import { useReducer } from "react";
import types from "./types";
const initialState = {
data: [],
error: [],
status: types.STATUS_IDLE
};
export function useApiCallReducer() {
function reducer(state, action) {
console.log("prevState: ", state);
console.log("action: ", action);
switch (action.type) {
case types.STATUS_FETCHING:
return {
...state,
status: types.STATUS_FETCHING
};
case types.STATUS_FETCH_SUCCESS:
return {
...state,
error: [],
data: action.data,
status: types.STATUS_FETCH_SUCCESS
};
case types.STATUS_FETCH_FAILURE:
return {
...state,
error: action.error,
status: types.STATUS_FETCH_FAILURE
};
default:
return state;
}
}
return useReducer(reducer, initialState);
}
语句中,该语句仅在 any 参数错误时为您提供默认值。
例如
import { useReducer } from "react";
import types from "./types";
const initialState = {
data: [],
error: [],
status: types.STATUS_IDLE
};
function reducer(state, action) {
console.log("prevState: ", state);
console.log("action: ", action);
switch (action.type) {
case types.STATUS_FETCHING:
return {
...state,
status: types.STATUS_FETCHING
};
case types.STATUS_FETCH_SUCCESS:
return {
...state,
error: [],
data: action.data,
status: types.STATUS_FETCH_SUCCESS
};
case types.STATUS_FETCH_FAILURE:
return {
...state,
error: action.error,
status: types.STATUS_FETCH_FAILURE
};
default:
return state;
}
}
export function useApiCallReducer() {
return useReducer(reducer, initialState);
}
您可能希望将声明更改为
if (...)
为了在发生错误时获取默认日期
答案 1 :(得分:0)
您的if语句同时检查“日期,月份和年份”是否错误以提供默认结果。您应该使用“ ||”代替 ”&”。
答案 2 :(得分:0)
由于您已远离编程,因此应签出Java Operators。 遇到问题的是逻辑运算符。
我希望这会有所帮助! :)
答案 3 :(得分:0)
如果要将日期,月份和年份分别替换为默认值,则如下所示使用
if(day<1||day>31) _day=26;
if(month<1||month>12) _month=2;
if(year<1000||year>9999)_year=2019;
如果即使其中一项输入错误,也要将日期更新为默认值,请使用
if((day<1||day>31)||(month<1||month>12)||(year<1000||year>9999))
{
_day=26;
_month=2;
_year=2019;
}