kotlin 第一个程序_如何在Kotlin中编写第一个程序?

kotlin 第一个程序

我听说您想学习编程。

您很可能正在研究Kotlin,因为您想创建一个Android应用程序。 或者,也许您正在尝试进行后端Web开发。

无论哪种情况,Kotlin都是一种很好的入门语言。

您已经在寻找一个好的教程,但是无论如何,它们都需要具备Java的先验知识。

那不是很不幸吗?

从初学者的角度来看-绝对是!

那么,您会发现,本教程分为多部分,正是您所需要的,因为它没有任何以前的编程经验。

因此,本教程不会涉及到Android或Web开发领域,但它将为您提供一个坚实的基础,开始您的编程之旅。

“您的编程之旅”(来源: pexels

但是在开始之前:

我需要在计算机上安装什么?

  • 终端应用程序。
  • 具有Kotlin语法突出显示支持的简单文本编辑器(例如: Atom + kotlin程序包效果很好)。
PS:如果您需要在Atom中安装Kotlin软件包的帮助,请参阅Atom官方手册上的教程
PPS:为什么不使用IntelliJ IDEA或其他一些IDE?
尽管我很喜欢IntelliJ,但我知道对于初学者来说这可能会令人困惑。
另外,这将使您无法学习程序开发周期(编辑,编译,运行),因为IDE会为您做所有事情。
如果您已经是一位经验丰富的程序员,并且您不需要这些细节,而只想学习一些Kotlin,请使用任何喜欢的编辑器或IDE。 不过请记住:本教程将使用kotlinc编译器。
我的高级教程之一中,我们充分利用了IDE。
  • 要运行由Kotlin编译器编译的程序,需要JDK(针对您的平台: Mac OS XLinuxWindows )。
  • Kotlin编译器 kotlinc 。 正确安装后,您应该能够在终端应用程序中运行命令kotlinc -version
$ kotlinc -version
info: kotlinc-jvm 1.2.21 (JRE 1.8.0_152-b16)

版本可能会有所不同,因为该语言( JetBrains )的作者经常更新该语言。

但是你说我不需要Java ...

在进行JDK的安装过程时,您可能想知道为什么要安装Java东西。

我只是告诉您,本指南不需要Java知识,不是吗?

所以,这是东西。

尽管Kotlin是自己的独立语言,但它确实依赖Java的标准库和开发套件。

您无需立即对此进行足够的思考。 在您的第一个应用程序中为您做的就是帮助Kotlin构建和运行您的应用程序。 适当时,我们将解决该问题。

暂时,我们应该立即着手在Kotlin中创建您的第一个程序!

你好世界-无聊...无聊吗?

我知道它很无聊,也许您已经看过几次了,但是在本文中,我们不仅要创建和运行您的“ Hello World”程序,还要:

  • 了解程序的代码及其组成的所有部分。
  • 探索构建和运行应用程序时发生的情况。

此外,您还将学习编程中可能发生的错误类型,并作为练习的一部分:

  • 您将在屏幕上打印一些更有趣的东西。
  • 您将以各种方式破坏程序,以便您可以体验开发周期中所有提到的错误。

说到…

Kotlin的发展周期

在Kotlin中,我们将编程过程分为几个步骤:

  1. 通过在文本编辑器中键入程序来编写程序,然后将其保存到文件ProgramName.kt
  2. 通过在终端应用程序中键入kotlinc ProgramName.kt -include-runtime -d ProgramName.jar进行编译。 我们将稍后讨论该命令的各个部分。
  3. 通过在终端应用程序中键入java -jar ProgramName.jar来运行编译的程序。

第一步,您将使用Kotlin编程语言创建该程序的可读格式。

第二步将人类可读的程序翻译成适合机器执行的语言。 -d ProgramName.jar选项指定将结果写入哪个文件。 -include-runtime告诉Kotlin编译器包括其标准库。 如果没有该选项,则下一步将看到运行时错误。

第三步运行程序。

让我们看看“ Hello World”程序的外观如何:

在Kotlin中创建您的第一个程序

编写Kotlin程序。

程序是一系列字符(例如字母,数字,空格和特殊符号)。 就像句子,段落或诗歌一样。

要编写程序,您需要使用文本编辑器键入这些字符并将其保存到名为HelloWorld.kt的文件中:

编译Kotlin程序

Kotlin编译器( kotlinc )是将您用Kotlin语言编写的程序转换为更适合在计算机上执行的语言的应用程序。

它以扩展名为.kt (包含您的程序)的常规文本文件作为输入,并创建扩展名为.jar (适合在计算机上执行的版本)的文件。

要编译Kotlin程序HelloWorld.kt ,请在终端中输入以下文本:

kotlinc HelloWorld.kt -include-runtime -d HelloWorld.jar

如果您正确键入程序,则应该看不到任何错误。 如果您在某处打了错字,则会看到类似以下的错误输出:

HelloWorld.kt:1:14: error: expecting comma or ')'
fun main(args Array<String>) {
^
HelloWorld.kt:1:15: error: parameter name expected
fun main(args Array<String>) {
^
HelloWorld.kt:1:10: error: a type annotation is required on a value parameter
fun main(args Array<String>) {
^

此输出表明存在编译错误。 如果您得到类似的信息,请确保您正确键入了HelloWorld.kt程序。 如果必须,请逐个字符检查。

程序成功编译后,您将看不到任何输出。 通常,Kotlin编译器的任何输出都将指示排序错误或警告。

运行Kotlin程序

有了编译的程序后,就可以运行它。 当计算机运行您的应用程序时,它将严格按照您提供的说明进行操作。

这是编程中最重要的部分-您可以使计算机精确地完成您想要的事情。

要运行HelloWorld.jar程序,请在终端中键入以下命令:

java -jar HelloWorld.jar

如果一切正确,您将在终端中看到预期的输出:

Hello World
了解程序

println()行是文件HelloWorld.kt最重要的一行。 该行是在终端中打印“ Hello World”文本的行。 稍后,当我们要编写更复杂的应用程序时,我们将处理程序的其他部分,例如funargsArray<String>

println()函数在标准输出上打印提供的文本。 标准输出通常与终端中的输出相同,但并非总是如此。 有时,标准输出可以重定向到其他地方,例如重定向到文件中。

文本"Hello World"是字符串文字。 字符串文字是表示程序源代码中文本的固定值( String类型)的文字。 稍后我们将返回类型和文字。

创建程序

目前,您的所有程序都非常简单,就像HelloWorld.kt一样。 唯一的不同是将要放入main()函数中的语句序列。 创建程序的最简单方法是:

  • HelloWorld.kt内容复制到MyProgram.kt (其中“ MyProgram”是新程序的名称)
  • 用语句序列替换println()语句:

失误

无论您做什么,编程时都会出错。 可以通过仔细检查程序来解决问题(就像您修复语法和在给朋友的消息中拼写错误时所做的一样)。 您将遇到几种错误:

编译时错误

Kotlin编译器会捕获这些错误。 发生此类错误是因为源代码的结构不正确,并且Kotlin编译器无法理解您要告诉的内容。

Kotlin编译器会告诉您源代码中哪里有错误,以及编译器期望什么。 Kotlin编译器将尝试解释为什么它无法将代码转换为机器可执行语言。

运行时错误

当您运行程序时,执行系统会捕获这些错误(例如,在运行java -jar HelloWorld.jar )。 之所以发生此类错误,是因为程序试图执行无效的操作,例如:

  • 被零除,
  • 试图访问不存在的数据,
  • 试图读取您无权读取的文件,
  • 尝试访问Internet上不可用的资源,
  • 等等。
逻辑错误

这些错误也称为错误。 这些错误通常表示程序在运行时产生错误的答案或错误的结果。

例如,如果您有一个程序,该程序要求用户输入两个数字并打印出这两个数字的总和。 当用户输入75 ,程序将打印13而不是12 。 那是一个错误的答案,因此程序存在逻辑错误(错误)。

完全由程序员检查错误的结果和程序的源代码,以找出其行为不正确的原因。 当您以程序员的身份发现“为什么”时,您应该能够修复该错误。

逻辑错误是最难的。 它们可能是微妙的,不可复制的并且很难找到。

作为程序员,至关重要的是能够识别您正在处理的错误类型,并仔细检查源代码以找出失败的原因并进行修复。 那是您应该通过练习和练习学习的第一项技能之一。

如果有足够的实践,那么您在避免这类错误方面会变得越来越好。 编写程序是一项需要不断谨慎和勤奋的活动。

输入输出

编写一个程序,不仅在屏幕上输出文本,而且还可以与用户交互,这不是很好吗?

这是任何程序的典型用例。 很少有应用程序不需要任何用户输入,因此您必须学习如何做。

在命令行应用程序世界中,有两种简单的方法可以做到这一点。

(而且您不希望直接进入图形或移动应用程序的世界,因为复杂性非常高-首先是基础)

命令行参数

第一种方法是从命令行参数读取用户输入。 例如,要访问第一个命令行参数,可以使用args[0] 。 对于第二个args[1] 。 对于第三个args[2] 。 等等。

这是读取第一个参数的示例程序: ReadFirstArgument.kt

现在尝试编译:

kotlinc ReadFirstArgument.kt -include-runtime -d ReadFirstArgument.jar

并运行它:

java -jar ReadFirstArgument.jar Peter

您应该看到预期的输出:

Hello, Peter! How are things going?

尝试用您的名字替换“ Peter”参数。 它应该向您打招呼,并询问您的情况如何!

从标准输入读取

现在,此方法更具交互性,但也更加复杂。 这将涉及一些概念,我们将在稍后讨论。

首先,我们将要求用户输入名称,然后将用户输入内容读入本地变量name (关于本地变量,以后)

这里最重要的部分是readLine() 。 它正在读取用户输入,直到该行的末尾(当用户按下“ Enter”时)。

然后,我们将使用局部变量name就像在上一个程序中使用args[0]

要编写这样的程序,请创建文件ReadFromInput.kt并在文本编辑器中键入以下内容:

然后,使用kotlinc …命令编译该程序,然后使用java -jar …命令运行该程序。 正确完成此操作后,在运行程序时应看到以下内容:

你叫什么名字? > 玛丽
你好,玛丽! 事情进行得如何?

(重点在于用户输入的内容)

尝试使用其他名称-它应该可以按预期工作。

练习题

  • 编写一个程序HelloWorldMultipleTimes.kt ,它将输出“ Hello World”十五次。
    如果您陷入困境或想查看答案,请在此处找到解决方案
  • 编写一个ReadTwoArguments.kt程序,该程序将读取第一个和第二个命令行参数,并将它们输出为用户的名字和名字。
    如果您陷入困境或想查看答案,请在此处找到解决方案
  • 编写一个程序ReadMutlipleInputs.kt ,该程序将询问用户其名字,然后询问他们的名字。 最后,该程序应通过姓氏和名字的组合来问候用户。
    如果您陷入困境或想查看答案,请在此处找到解决方案
  • HelloWorld.kt ,如果删除:
    * main
    * fun
    * println
    * "Hello World"
    * {
    * }
    *首先"
    *秒"
    这是什么样的错误(针对上述每个选项)?
    如果您陷入困境或想查看答案,请在此处找到解决方案
  • 编译HelloWorld.kt ,如果不指定会发生什么:
    -include-runtime
    如果您陷入困境或想查看答案,请在此处找到解决方案
  • 编写一个程序AsciiArtHello.kt ,它将在终端中输出以下内容:
## ## ######### ## ## #########
## ## ## ## ## ## ##
## ## ## ## ## ## ##
######### ######### ## ## ## ##
######### ######### ## ## ## ##
## ## ## ## ## ## ##
## ## ## ## ## ## ##
## ## ######### ######### ######### #########

如果您陷入困境或想查看答案,请在此处找到解决方案

  • 运行程序ReadFirstArgument ,如果不提供第一个参数,则如下所示:
java -jar ReadFirstArgument.jar

会发生什么样的错误?

如果您陷入困境或想查看答案,请在此处找到解决方案

  • 我已经编写了以下程序HelloWeird.kt

该程序有什么问题? 如果编译并运行它会怎样? 如何修复该程序?

如果您陷入困境或想查看答案,请在此处找到解决方案

我的相关文章

翻译自: https://hackernoon.com/how-to-write-your-first-program-in-kotlin-8554cb526158

kotlin 第一个程序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,作为AI语言模型,我无法提供完整的安卓应用程序。下面是一个简单的示例,可用于开始编写新闻应用程序: 1. 在Android Studio创建一个新项目,并选择Kotlin作为主要语言。 2. 在项目创建一个RecyclerView,用于显示新闻列表。 3. 创建一个新闻数据模型类,包括标题、描述、图片等信息。例如: ``` data class News(val title: String, val description: String, val image: Int) ``` 4. 创建一个新闻适配器类,用于将新闻数据绑定到RecyclerView的项。例如: ``` class NewsAdapter(private val newsList: List<News>) : RecyclerView.Adapter<NewsAdapter.ViewHolder>() { class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { val titleTextView: TextView = view.findViewById(R.id.title_text_view) val descriptionTextView: TextView = view.findViewById(R.id.description_text_view) val imageView: ImageView = view.findViewById(R.id.image_view) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.news_item, parent, false) return ViewHolder(view) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { val news = newsList[position] holder.titleTextView.text = news.title holder.descriptionTextView.text = news.description holder.imageView.setImageResource(news.image) } override fun getItemCount() = newsList.size } ``` 5. 在MainActivity初始化新闻数据,并将其传递给适配器。例如: ``` class MainActivity : AppCompatActivity() { private lateinit var newsRecyclerView: RecyclerView private lateinit var newsAdapter: NewsAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) newsRecyclerView = findViewById(R.id.news_recycler_view) newsAdapter = NewsAdapter(getNewsList()) newsRecyclerView.adapter = newsAdapter newsRecyclerView.layoutManager = LinearLayoutManager(this) } private fun getNewsList(): List<News> { return listOf( News("新闻标题1", "新闻描述1", R.drawable.news_image1), News("新闻标题2", "新闻描述2", R.drawable.news_image2), News("新闻标题3", "新闻描述3", R.drawable.news_image3), // 添加更多新闻... ) } } ``` 6. 在布局文件添加RecyclerView和新闻项布局。例如: ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/news_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> <LinearLayout android:id="@+id/news_item" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop"/> <TextView android:id="@+id/title_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="18sp" android:textStyle="bold" android:padding="8dp"/> <TextView android:id="@+id/description_text_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="14sp" android:padding="8dp"/> </LinearLayout> ``` 这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值