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

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:大數(shù)據(jù) 用Scala計算級數(shù)

柚子快報邀請碼778899分享:大數(shù)據(jù) 用Scala計算級數(shù)

http://yzkb.51969.com/

目錄

題目

分析

源碼

檢驗

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

題目

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

分析

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

源碼

源碼一,簡單版

import scala.io.StdIn._

import scala.util.control.Breaks._

/**

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

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

?*/

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

object Series {

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

? ? println("請輸入一個整數(shù)")

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

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

? ? breakable{

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

? ? ? while(true){

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

? ? ? ? val q = readLine()

? ? ? ? //當輸入大小寫的Q字母時,程序退出

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

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

? ? ? ? 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"當 q=$q 時,Sn=$Sn")

? ? ? }

? ? ? }

? ? }

}

源碼二,加入容錯

import scala.io.StdIn._

import scala.util.control.Breaks._

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

object Series {

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

breakable {

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

while (true) {

println("請輸入一個正整數(shù)")

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

//因為從鍵盤輸入的數(shù)據(jù),包括各種類型,為了增加容錯,故選用readLine()

val input = readLine()

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

Try(input.toLong) match {

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

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

println("請輸入一個大于0的正整數(shù)。")

case Success(q) =>

try {

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

var sn = 0.0

var n = 1

var an = 1.0

while (sn < q) {

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

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

sn = sn + an

n = Math.addExact(n, 1)

}

println(s"當q=$q, sn=$sn")

} catch {

//對捕獲的異常進行處理

case _: ArithmeticException =>

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

case _: Exception =>

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

}

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

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

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

break

//異常處理

case Failure(_: NumberFormatException) =>

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

case Failure(exception) =>

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

}

}

}

}

}

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

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

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

當處理異常時,Scala 提供了兩種主要的方法:使用 `Try` 和 `match`,以及使用 `try` 和 `catch` 塊。這兩種方法都可以用來捕獲和處理異常,但是它們在語法和用法上有一些不同。

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

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

```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` 是類似于其他編程語言中的異常處理機制,用于捕獲和處理代碼塊中的異常。在 Scala 中,你可以使用 `try` 塊來嘗試執(zhí)行可能會引發(fā)異常的代碼,并使用 `catch` 塊來捕獲并處理異常。

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

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

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

運行測試

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

柚子快報邀請碼778899分享:大數(shù)據(jù) 用Scala計算級數(shù)

http://yzkb.51969.com/

精彩鏈接

評論可見,查看隱藏內(nèi)容

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

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

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

發(fā)布評論

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

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄