欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù) 用Scala計(jì)算級(jí)數(shù)

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù) 用Scala計(jì)算級(jí)數(shù)

http://yzkb.51969.com/

目錄

題目

分析

源碼

檢驗(yàn)

?編輯?? ??? ??? ??? ??? ??? ?

題目

/** ?* 請(qǐng)用腳本的方式編程計(jì)算并輸出下列級(jí)數(shù)的前n項(xiàng)和Sn,知道Sn剛好大于或等于q為止,其中,q為大于0的整數(shù),其值通過(guò)鍵盤(pán)輸入。 ?* Sn=2/1+3/2+。。。。。。+(n+1)/n ?*/

分析

//分析可得該題包含四個(gè)變量對(duì)象,和Sn,項(xiàng)An=(i+1)/i,項(xiàng)數(shù)n,限定值q。

源碼

源碼一,簡(jiǎn)單版

import scala.io.StdIn._

import scala.util.control.Breaks._

/**

?* 請(qǐng)用腳本的方式編程計(jì)算并輸出下列級(jí)數(shù)的前n項(xiàng)和Sn,知道Sn剛好大于或等于q為止,其中,q為大于0的整數(shù),其值通過(guò)鍵盤(pán)輸入。

?* Sn=2/1+3/2+。。。。。。+(n+1)/n

?*/

//分析可得該題包含四個(gè)變量對(duì)象,和Sn,項(xiàng)An=(i+1)/i,項(xiàng)數(shù)n,限定值q

object Series {

? def main(args:Array[String]): Unit ={

? ? println("請(qǐng)輸入一個(gè)整數(shù)")

? ? println("輸入q或Q時(shí)程序退出......")

? ? //用Breaks類實(shí)現(xiàn)對(duì)循環(huán)的控制

? ? breakable{

? ? ? //用一個(gè)死循環(huán)實(shí)現(xiàn)對(duì)鍵盤(pán)的掃描和鍵盤(pán)的連續(xù)輸入

? ? ? while(true){

? ? ? ? //從鍵盤(pán)輸入值,用val保證數(shù)據(jù)安全性

? ? ? ? val q = readLine()

? ? ? ? //當(dāng)輸入大小寫(xiě)的Q字母時(shí),程序退出

? ? ? ? if(q.toLowerCase()=="q") break

? ? ? ? //用Long(長(zhǎng)整型)增加數(shù)據(jù)輸入的長(zhǎng)度

? ? ? ? var Sn = 0.0

? ? ? ? var An = 1.0

? ? ? ? var n = 1

? ? ? ? while(Sn

? ? ? ? ? An = (n+1)/n.toDouble

? ? ? ? ? Sn = Sn+An

? ? ? ? ? n = n+1

? ? ? ? }

? ? ? ? println(f"當(dāng) q=$q 時(shí),Sn=$Sn")

? ? ? }

? ? ? }

? ? }

}

源碼二,加入容錯(cuò)

import scala.io.StdIn._

import scala.util.control.Breaks._

import scala.util.{Try, Success, Failure}

object Series {

def main(args: Array[String]): Unit = {

breakable {

//通過(guò)一個(gè)死循環(huán),加一個(gè)循環(huán)控制實(shí)現(xiàn)實(shí)現(xiàn)連續(xù)輸入功能

while (true) {

println("請(qǐng)輸入一個(gè)正整數(shù)")

println("輸入q或Q退出......")

//因?yàn)閺逆I盤(pán)輸入的數(shù)據(jù),包括各種類型,為了增加容錯(cuò),故選用readLine()

val input = readLine()

//調(diào)用Try類,通過(guò)模式匹配實(shí)現(xiàn)容錯(cuò)處理

Try(input.toLong) match {

//判斷輸入值是否是正數(shù)

case Success(q) if (q <= 0) =>

println("請(qǐng)輸入一個(gè)大于0的正整數(shù)。")

case Success(q) =>

try {

//實(shí)現(xiàn)級(jí)數(shù)計(jì)算的邏輯

var sn = 0.0

var n = 1

var an = 1.0

while (sn < q) {

//通過(guò)Math.addExact()函數(shù)對(duì)數(shù)據(jù)溢出異常進(jìn)行處理

an = Math.addExact(n , 1) / n.toDouble

sn = sn + an

n = Math.addExact(n, 1)

}

println(s"當(dāng)q=$q, sn=$sn")

} catch {

//對(duì)捕獲的異常進(jìn)行處理

case _: ArithmeticException =>

println("計(jì)算中發(fā)生了溢出異常。請(qǐng)嘗試輸入較小的正整數(shù)。")

case _: Exception =>

println("發(fā)生了未知異常。")

}

//實(shí)現(xiàn)程序退出功能

case Failure(_: NumberFormatException) if input.equalsIgnoreCase("q") =>

println("程序已退出......")

break

//異常處理

case Failure(_: NumberFormatException) =>

println("輸入無(wú)效,請(qǐng)輸入一個(gè)有效的正整數(shù)或q退出。")

case Failure(exception) =>

println(s"發(fā)生了未知異常:${exception.getMessage}")

}

}

}

}

}

Math.addExact(a,b) 是 Java 中的一個(gè)方法,用于執(zhí)行精確的整數(shù)加法操作。它有以下好處:

溢出檢查:Math.addExact 方法會(huì)在加法操作導(dǎo)致溢出時(shí)拋出 ArithmeticException 異常。這可以幫助你在計(jì)算過(guò)程中檢測(cè)到溢出情況,從而避免得到錯(cuò)誤的結(jié)果。 明確的行為:在 Java 中,整數(shù)溢出是未定義的行為,可能會(huì)導(dǎo)致意外結(jié)果。使用 Math.addExact 可以確保在溢出時(shí)得到明確的異常,而不是不確定的結(jié)果。 代碼可讀性:在涉及到整數(shù)溢出檢查的代碼中,使用 Math.addExact 可以提高代碼的可讀性和可維護(hù)性。它傳達(dá)了你的意圖,即要執(zhí)行精確的整數(shù)加法操作。

使用 Math.addExact(n, 1) 用于執(zhí)行 n + 1 的加法操作,這可以確保在加法操作導(dǎo)致溢出時(shí)得到異常。這在處理數(shù)字計(jì)算時(shí)是一種良好的實(shí)踐,特別是當(dāng)你需要確保結(jié)果的準(zhǔn)確性和穩(wěn)定性時(shí)。

當(dāng)處理異常時(shí),Scala 提供了兩種主要的方法:使用 `Try` 和 `match`,以及使用 `try` 和 `catch` 塊。這兩種方法都可以用來(lái)捕獲和處理異常,但是它們?cè)谡Z(yǔ)法和用法上有一些不同。

**1. 使用 `Try` 和 `match`:**

`Try` 是 Scala 中的一個(gè)特殊類,它用于嘗試執(zhí)行可能會(huì)引發(fā)異常的代碼塊,并將結(jié)果包裝在 `Success` 或 `Failure` 對(duì)象中,具體取決于代碼是否成功執(zhí)行或引發(fā)了異常。你可以使用 `match` 來(lái)匹配 `Try` 的結(jié)果并相應(yīng)地處理成功或失敗的情況。

```scala import scala.util.{Try, Success, Failure}

val result: Try[Int] = Try("123".toInt)

result match { ? case Success(value) => ? ? println(s"成功:$value") ? case Failure(exception) => ? ? println(s"失?。?exception") } ```

**2. 使用 `try` 和 `catch`:**

`try` 和 `catch` 是類似于其他編程語(yǔ)言中的異常處理機(jī)制,用于捕獲和處理代碼塊中的異常。在 Scala 中,你可以使用 `try` 塊來(lái)嘗試執(zhí)行可能會(huì)引發(fā)異常的代碼,并使用 `catch` 塊來(lái)捕獲并處理異常。

```scala try { ? val value = "abc".toInt ? println(s"成功:$value") } catch { ? case e: NumberFormatException => ? ? println(s"捕獲異常:${e.getMessage}") } finally { ? println("無(wú)論是否有異常,這里的代碼都會(huì)執(zhí)行。") } ```

在上面的示例中,`try` 塊嘗試將字符串轉(zhuǎn)換為整數(shù),但由于字符串無(wú)法轉(zhuǎn)換為整數(shù),將拋出 `NumberFormatException` 異常,然后被 `catch` 塊捕獲并處理。

總的來(lái)說(shuō),`Try` 和 `match` 更符合函數(shù)式編程的風(fēng)格,而 `try` 和 `catch` 更接近傳統(tǒng)的異常處理機(jī)制。選擇使用哪種方法取決于個(gè)人的偏好和項(xiàng)目的需求。無(wú)論哪種方法,異常處理都是編寫(xiě)健壯和可靠代碼的重要部分。

運(yùn)行測(cè)試

?? ??? ? ?? ??? ? ?? ??? ?

柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù) 用Scala計(jì)算級(jí)數(shù)

http://yzkb.51969.com/

精彩鏈接

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18874647.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄