7-6 混合类型数据格式化输入 (5 分)(JAVA and C)

本文介绍了一个简单的编程问题,要求按特定顺序读入并输出数据。提供了Java和C语言的示例代码,解释了如何实现浮点数、整数及字符的正确格式化输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本题要求编写程序,顺序读入浮点数1、整数、字符、浮点数2,再按照字符、整数、浮点数1、浮点数2的顺序输出。

输入格式:
输入在一行中顺序给出浮点数1、整数、字符、浮点数2,其间以1个空格分隔。

输出格式:
在一行中按照字符、整数、浮点数1、浮点数2的顺序输出,其中浮点数保留小数点后2位。

输入样例:
2.12 88 c 4.7
输出样例:
c 88 2.12 4.70

JAVA:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        float a = in.nextFloat();
        int b = in.nextInt();
        String c = in.next();
        float d = in.nextFloat();
        System.out.printf("%s "+"%d "+"%.2f "+ "%.2f",c,b,a,d);
    }
}

浮点数设置为float型
浮点型设置为double型
题目中浮点数未注明精度,运行结果double型和float均能运行成功,显然double型会占用更多的空间导致内存更大一些
C:

#include<stdio.h>
int main()
{
    int b;
    float f1, f2;
    char *ch;
    scanf("%f %d %c %f", &f1, &b, &ch, &f2);
    printf("%c %d %.2f %.2f", ch, b, f1, f2);
    return 0;
}

在这里插入图片描述
JAVA语法部分解析:
next() 与 nextLine() 区别
next():

1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():

1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取:判断输入的数和要获取的类型是否相同,这样就不会接收到其它的数据类型。但是做题中无需做这些操作。
注:Java中不能用%c输出字符,不要犯和我一样的错误—>

### 后端同时处理普通数据和JSON数据的方法 为了使后端能够同时处理普通数据和JSON数据,可以采用不同的策略来区这两种类型输入。一种常见的方式是在HTTP请求的不同部放置不同类型数据。 #### 使用URL参数传递普通数据 对于简单的键值对形式的普通数据,可以通过GET方法中的查询字符串或POST/PUT/PATCH方法中的表单编码(`application/x-www-form-urlencoded` 或 `multipart/form-data`)来进行传输[^4]。这种方式适用于少量且结构简单的小型数据集。 例如,在发送一个带有额外整数ID字段以及嵌套对象作为主体内容的请求时: ```http POST /api/resource?userId=123 HTTP/1.1 Content-Type: application/json;charset=UTF-8 { "roles": { "id": 4, "name": "admin" } } ``` 这里`userId`被附加到了URL路径后面作为一个查询参数,而复杂的JSON对象则放在了消息体里。 #### 结合使用@PathVariable, @RequestParam与@RequestBody注解 在Spring Boot应用程序中,如果要在一个控制器方法内同时获取来自不同位置的数据,则可以根据其来源别应用相应的注解[@PathVariable](用于路径变量),[@RequestParam](针对查询参数) 和 [@RequestBody](解析实体正文)[^2]。 考虑这样一个场景:有一个API允许更新用户的个人信息,并接受用户ID作为URI的一部,其他属性通过JSON格式提交至服务器;此时可以在Java代码中这样定义路由处理器函数: ```java @PostMapping("/users/{userId}") public ResponseEntity<String> updateUser( @PathVariable Long userId, @RequestParam(required=false) Boolean activeStatus, @RequestBody UserDetail detail){ // 更新逻辑... return new ResponseEntity<>("User updated successfully.", HttpStatus.OK); } ``` 上述示例展示了如何组合这些注解以满足需求——其中`{userId}`是从URL提取出来的路径片段,`activeStatus`可能是一个可选的布尔标志位,最后整个`detail`对象则是由客户端发来的JSON序列化而来的内容。 #### Gin框架下的实现方案 对于Golang开发者来说,当使用像[Gin](https://github.com/gin-gonic/gin)这样的Web开发库构建RESTful API服务的时候,也可以轻松地做到这一点。只需要确保HTML模板正确设置了表单项的名字以便于识别它们是属于哪一部数据流即可[^3]。 假设我们正在创建一个支持上传文件的同时还能携带一些元信息(比如用户名、邮箱地址等)的功能模块,那么对应的Go语言代码可能会看起来像是这样子: ```go func handleForm(c *gin.Context) { var formData struct { Name string `form:"name"` Email string `form:"email"` Metadata map[string]interface{} `json:"metadata"` } if err := c.ShouldBind(&formData); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error":err.Error()}) return } file, _ := c.FormFile("file") // ... 文件保存操作 ... c.String(http.StatusOK, fmt.Sprintf("Received %s's data and file", formData.Name)) } ``` 在这个例子里面,`ShouldBind()`会自动尝试从多个地方读取所需的信息并将之绑定到指定的目标结构体内。这使得即使混合着多种形式的数据也能得到妥善管理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值