通常在学校,我们的讲师会告诉我们Default在转换案例陈述的最后总是包含一个陈述.但是,我一直想知道所有(或大多数)场景是否必要?
考虑C++中的以下示例:
int num = rand()%3;
switch (num)
{
case 0: methodOne();
break;
case 1: methodTwo();
break;
case 2: methodThree();
break;
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我觉得不可能有一个> 2或<0的情况,所以我还需要包含一个Default声明吗?
在SO中有类似的问题,需要Default在switch-case中.那里的回复表明我们几乎可以在任何时候包括一个Default.但在我个人遇到的所有情况中,它似乎是多余的,因为Default永远无法达到.
编辑:此外,在防御性编程方面,这种情况需要一个Default声明吗?如果我要添加一个Default声明.这只是一个error-handling声明,我说得对吗?
在Java中,我们需要至少有一个类来保存main方法.
当我创建一个C#项目时,框架代码看起来类似于Java框架代码.
但是,C#中的main函数是否应该至少有一个类?
namespace Hello_World
{
class Hello //Is it compulsory to have this class ?
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
Console.ReadKey();
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我假设在最基本的C#程序中至少需要一个类,因为主要方法需要包含在类中.由于运行程序需要main(),因此至少需要一个类.我说得对吗?
在C++中,当我们需要打印单个空格时,我们可能会执行以下操作:
cout << ' ';
Run Code Online (Sandbox Code Playgroud)
或者我们甚至可以使用转换后的ASCII代码来表示空间:
cout << static_cast<char>(32); //ASCII code 32 maps to a single space
Run Code Online (Sandbox Code Playgroud)
我意识到,打印空字符也会导致打印一个空格.
cout << static_cast<char>(0); //ASCII code 0 maps to a null character
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:所有C++编译器都是通用的,当我打印时static_cast<char>(0),它总是在显示器中显示为单个空格吗?
如果它是通用的,当我使用文件输出流时它是否适用于文本文件?
我们可以声明一个变量来保存系统的当前时间,使用:
time_t now = time(0);
Run Code Online (Sandbox Code Playgroud)
time(0)也可用于生成随机值:
#define SEED time(0);
srand((unsigned int )SEED);
Run Code Online (Sandbox Code Playgroud)
我的问题是:到底是什么time(0)?默认情况下,它以毫秒为单位,类型为long? 如果我想打印出 的值time(0),可以用"%d"print 吗?(Sicneprintf()要求我们传入它需要的类型,但是我怎么知道它的类型是什么time(0)?)。
如果它是 类型time_t,我应该在 printf 中使用什么格式说明符?
我创建了一个类来保存一些电子邮件数据:
public class EmailClass{
public string sender;
public string receiver;
public string message;
public EmailClass(string sender, string receiver, string message){
this.sender = sender;
this.receiver = receiver;
this.message = message;
}
public string Sender { get; set; }
public string Receiver { get; set; }
public string Message{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的Web应用程序中,我有一个页面:( MyHome.aspx.cs在相同的命名空间中创建EmailClass):
public partial class MyHome: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
EmailClass obj = new EmailClass("sender", "receiver", "a message");
Response.Write("Info: " + …Run Code Online (Sandbox Code Playgroud) 我遇到了这个代码片段的Big O时间复杂度的问题:保证以下代码的时间复杂度为O(n ^ 4).
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = n; i>=1; i--) //n
for(int j = 1; j<=i; j++) //n
if(!list.contains(i*j)) //n?
list.add(i*j); //1?
Run Code Online (Sandbox Code Playgroud)
我的问题:为什么是O(n ^ 4)而不是O(n ^ 3)?
我想使用较旧的 log4J 版本(特别1.27.1是我的项目中的版本)删除所有直接/传递依赖项。
我已确保我的项目pom.xml和lib文件夹不包含log4J 1.27.1.
但是,每当项目构建到.war文件中时,我的项目中仍有一些其他库仍在使用log4j 1.27.1,导致log4j-1.27.1.jar被下载到构建中进行部署。
我们有什么方法可以通过阻止 Maven 项目下载特定依赖项来强制它吗?例如,通过在pom.xml文件中添加一些配置?
编辑 1:了解一种方法是在文件中进行排除pom.xml。但这需要我明确提及所有工件。无论如何,有没有像我所说的那样去做"hey, I don't want to see log4j-1.27.1.jar downloaded in my Maven project at all, be it any artifact is depending on it"?
在Java的Graphics2D类中,它有一个transform方法。
public abstract void transform(AffineTransform Tx)
Run Code Online (Sandbox Code Playgroud)
这是根据文档的描述:
根据后指定先应用的规则与此 Graphics2D 中的 Transform 组合一个 AffineTransform 对象。如果当前Transform是Cx,则与Tx合成的结果是新的Transform Cx'。Cx' 成为该 Graphics2D 的当前变换。通过更新的变换 Cx' 变换点 p 相当于先通过 Tx 变换 p,然后通过原始变换 Cx 变换结果。换句话说,Cx'(p) = Cx(Tx(p))。如有必要,会制作 Tx 的副本,因此对 Tx 的进一步修改不会影响渲染。
我读了好几遍了,但还是不明白它的作用。我也尝试过寻找其他来源,但关于 g2d 的转换方法的内容并不多。
所以我的问题是:转换到底做什么?我们什么时候使用它?
如果有人能以简化的方式解释它,那就太好了。
我正在使用Java中的Regex,我想匹配一个出现0或1个点的字符串..所以我希望任何带有单点或无点的字符串都返回true,带有2个或更多点的字符串返回false.
根据Java Docs:
X?X,曾经或根本没有
所以我有以下内容:
String str = "abc.def";
System.out.println(str.matches(".?"));
Run Code Online (Sandbox Code Playgroud)
我期待str匹配.0或1次,但它打印false.
我的问题:我错过了解释的含义?吗?我该怎么做才能让它匹配0或1次?
我有两个类动物和狗.因为你可以从动物身上延伸出来.我可以毫无问题地编写这些类,但我注意到我可以像这样创建一个新的dog对象:
Dog firstDog = new Dog("rocky");
Run Code Online (Sandbox Code Playgroud)
没关系,但是当我尝试创建这样的新实例时:
Animal secondDog = new Dog("alex");
Run Code Online (Sandbox Code Playgroud)
没有任何错误,但我无法访问我在Dog类中编写的任何字段或方法,即使它们是公共的,所以如果我想在一个类型与其超类的类型相同的变量中保存一个对象,我可以到达字段和仅实现超类的方法(对于此示例名称,颜色,setColor()和toString()),并且没有任何方法可以访问在子类中实现的字段和方法.我是否正确理解当我尝试调用secondDog的toString()函数时它调用我在Dog类中编写的方法,我知道我在Dog类中重写了这个函数但是我无法达到我在Dog类中实现的其他方法.java如何处理这些?
动物类:
public class Animal {
private String name;
private String color;
public Animal(String name){
this.name=name;
}
public void setColor(String color){
this.color=color;
}
public String toString(){
return"Hi, my name is " + this.name + ". I'm " + this.color;
}
}
Run Code Online (Sandbox Code Playgroud)
狗类:
public class Dog extends Animal {
private int age;
public Dog(String name){
super(name);
setColor("gray");
this.age = 7;
}
public String speakDog(){
return"wof!";
}
public String toString(){ …Run Code Online (Sandbox Code Playgroud)