我的问题不仅仅是扩展语言特定技能.我想知道任何人可能会向渴望知识的人提供什么样的建议,但缺乏方向.随意跳过这个问题.
背景:我在我的大学读过一门java计算机科学课程,但我计划主修计算机科学和电子计算机工程(ECE).我的java课程非常简陋.我们获得了一个框架,只是编辑/创建了一些方法和类来执行一个简单的任务.我们制作了一个Breakout版本,并为一个简单的连接四游戏创建了一个AI.虽然我对大O符号有点熟悉,但实际上我没有在课堂上学过它(我的下一个CS课程涵盖了这一点).在我的ECE课程中,我们还在PBASIC中编写了BOE-Bots,以便在各种障碍课程中进行竞争.作为一名工科学生,我也被介绍到matlab,虽然我只用它来做线性代数作业.总而言之,我没有太多的编程背景,但我非常喜欢到目前为止所做的一切,而且我正在寻找建立更有价值的技能的方法.
采取的步骤:在更加关注reddit的编程部分之后,我找到了Project Euler的链接.今年夏天,我一直在抨击这些问题(昨天完成了我的第42个解决方案),但我正在寻找更多方向.我一直在阅读博客文章和SO.我想学习一些关于php的东西,也许还要创建一个动态的网页,但从根本上说,我想做一些事情来改善自己,为工作世界做好准备.
问题: 你会为我推荐什么方向?我应该学习一门新语言吗?继续攻击Project Euler?阅读一些有关编程的书籍?开始一个编码项目(我甚至不知道从哪里开始)?等到上学?了解更基本的编程原则?
我想有了所有可用的路径,我只是有点不知所措,我不想陷入可能对我的职业机会有害的道路.我也很难做出决定.非常感谢您的建议!
Apple提供了一个简洁的可选链接示例
class Person {
var residence: Residence?
}
class Residence {
var numberOfRooms = 1
}
let john = Person()
if let roomCount = john.residence?.numberOfRooms {
println("John's residence has \(roomCount) room(s).")
} else {
println("Unable to retrieve the number of rooms.")
}
Run Code Online (Sandbox Code Playgroud)
想象一下尝试用一些算术运算来调整条件.这会导致编译器错误,因为模运算符不支持选项.
if john.residence?.numberOfRooms % 2 == 0 {
// compiler error: Value of optional type Int? not unwrapped
println("John has an even number of rooms")
} else {
println("John has an odd number of rooms")
}
Run Code Online (Sandbox Code Playgroud)
当然,您总是可以执行以下操作,但它缺乏可选链接的简单性和简洁性.
if …Run Code Online (Sandbox Code Playgroud) 我试图解决Project Euler的问题.我知道我的方法会在逻辑上起作用(它几乎立即返回小规模问题的答案).然而,它可怕地扩展.我已经尝试更改.ini文件,但无济于事.
这是我的代码:
public class Number28 {
static int SIZE = 101; //this should be an odd number, i accidentally posted 100
/**
* @param args
*/
public static void main(String[] args) {
double start = System.currentTimeMillis();
long spiral[][]= spiral(SIZE);
long sum = 0;
for(int i = 0; i < SIZE; i++)
{
sum += spiral[i][i];
sum += spiral[i][SIZE - 1 - i];
}
System.out.println(sum - 1);
double time = System.currentTimeMillis() - start;
System.out.println(time);
}
public static long[][] spiral(int size){ …Run Code Online (Sandbox Code Playgroud) 在java中,如果我想创建一些可以接收双打和字符串作为适当输入的应用程序,我可能会执行以下操作:
String input = getInput();//
try {
double foo = Double.valueOf(input);
//Do stuff with foo here
} catch (NumberFormatException e) {
//Do other validation with input
}
Run Code Online (Sandbox Code Playgroud)
你会如何在c ++中做到这一点?atof()对于无效输入返回0.0,但是如何将其与"0.0"的有效双精度区分开来?顺便说一句,我只能包括<iostream>,<string>,<cstdlib>,和<cassert>在这个项目.我假设我需要以cin某种方式使用,但是如果在cin将一些字符串解析为double 之后如何才能获取原始输入?
编辑:我可能会使用以下内容,但正如我之前所说,<sstream>由于某种原因,我不允许导入此作业
string input;
getline(cin, input);
double x;
istringstream foo(input);
foo >> x
if(cin){
//do manipulations with x
}
else{
//since it's not a number, check if input is a valid command etc..
}
Run Code Online (Sandbox Code Playgroud)