for(int i=0;i<=item_num-1;i++) { str=br.readLine(); String[] Array=str.split(" "); int v=Integer.valueOf(numbersArray[0]); int w=Integer.valueOf(numbersArray[1]); item[i][0]=v; item[i][1]=w; } br.close();只读取同一行
时间: 2024-03-14 09:45:52 浏览: 103
在这段代码中,您使用的是 `numbersArray` 而不是 `Array` 中的值。因此,每次循环都会将第一行的相同值分配给 `item[i][0]` 和 `item[i][1]`。可以尝试将 `numbersArray` 更改为 `Array`,如下所示:
```
for (int i = 0; i <= item_num-1; i++) {
str = br.readLine();
String[] Array = str.split(" ");
int v = Integer.valueOf(Array[0]);
int w = Integer.valueOf(Array[1]);
item[i][0] = v;
item[i][1] = w;
}
br.close();
```
这应该会将每一行的值正确地赋值给 `item` 数组。
相关问题
将如下代码转成C#语言代码import random import math def quick_mod(num1, num2, num3): result = 1 while num2 > 0: if (num2 & 1) == 1: result = (result * num1) % num3 num1 = (num1 * num1) % num3 num2 = num2 >> 1 return result m = int(input("请输入您要检测的数m:")) k = int(input("请输入安全参数k: ")) i = 1 while i <= k: a = random.randint(2, m - 2) print("k = " + str(i) + "时:生成的随机数为" + str(a), end=",") g = math.gcd(a, m) r = quick_mod(a, m - 1, m) if g != 1: print("(%d,%d) = %d,该数为合数!" % (a, m, g)) break elif r != 1: print("%d**%d(mod %d) = %d,该数为合数!" % (a, m - 1, m, r)) break else: print("m = " + str(m) + "可能为素数!") i += 1 if i == k + 1: print("\n因此,该数可能为素数,且概率为" + str((1 - 1 / (2 ** k)) * 100) + "%")
以下是将给出的 Python 代码转换为 C# 代码:
```csharp
using System;
class Program
{
static int QuickMod(int num1, int num2, int num3)
{
int result = 1;
while (num2 > 0)
{
if ((num2 & 1) == 1)
{
result = (result * num1) % num3;
}
num1 = (num1 * num1) % num3;
num2 = num2 >> 1;
}
return result;
}
static void Main(string[] args)
{
Random rand = new Random();
int m, k;
Console.Write("请输入您要检测的数m:");
m = int.Parse(Console.ReadLine());
Console.Write("请输入安全参数k: ");
k = int.Parse(Console.ReadLine());
int i = 1;
while (i <= k)
{
int a = rand.Next(2, m - 2);
Console.Write("k = " + i + "时:生成的随机数为" + a + ",");
int g = (int)MathExt.Gcd(a, m);
int r = QuickMod(a, m - 1, m);
if (g != 1)
{
Console.WriteLine("(" + a + "," + m + ") = " + g + ",该数为合数!");
break;
}
else if (r != 1)
{
Console.WriteLine(a + "^" + (m - 1) + "(mod " + m + ") = " + r + ",该数为合数!");
break;
}
else
{
Console.WriteLine("m = " + m + "可能为素数!");
i++;
}
}
if (i == k + 1)
{
Console.WriteLine("\n因此,该数可能为素数,且概率为" + ((1 - 1 / Math.Pow(2, k)) * 100) + "%");
}
}
}
class MathExt
{
public static int Gcd(int a, int b)
{
while (b != 0)
{
int tmp = b;
b = a % b;
a = tmp;
}
return a;
}
}
```
需要注意的是,在 C# 中没有内置的 `gcd()` 函数,因此需要自己实现一个辗转相除法求最大公约数的函数。此外,在 C# 中使用 `Random` 类来生成随机数,而不是 Python 中的 `random` 模块。此外,C# 中的字符串拼接使用 `+` 符号,而不是 Python 中的 `%` 符号。另外,C# 中的幂运算使用 `Math.Pow()` 函数,而不是 Python 中的 `**` 符号。
Java使用File类二进制I/O流类标准输入输出流编写程序,要求从键盘上读取一个整数,一个浮点数和一个字符串,利用PrintWriter类将它们写到一个文件中,然后通过利用BufferedReader类的readLine()方法从刚刚那个文件中读出这些数据,在控制台显示出来。
好的,下面是代码实现:
```java
import java.io.*;
public class FileDemo {
public static void main(String[] args) {
// 从标准输入流中读取数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("请输入一个整数:");
int num1 = Integer.parseInt(br.readLine());
System.out.print("请输入一个浮点数:");
float num2 = Float.parseFloat(br.readLine());
System.out.print("请输入一个字符串:");
String str = br.readLine();
// 创建一个File对象,表示要写入的文件
File file = new File("test.txt");
// 创建一个PrintWriter对象,用于写入数据到文件中
PrintWriter pw = new PrintWriter(file);
// 向文件中写入数据
pw.println(num1);
pw.println(num2);
pw.println(str);
// 关闭输出流
pw.close();
// 创建一个BufferedReader对象,用于从文件中读取数据
BufferedReader br2 = new BufferedReader(new FileReader(file));
// 从文件中读取数据
int num1FromFile = Integer.parseInt(br2.readLine());
float num2FromFile = Float.parseFloat(br2.readLine());
String strFromFile = br2.readLine();
// 输出读取到的数据
System.out.println("从文件中读取到的整数是:" + num1FromFile);
System.out.println("从文件中读取到的浮点数是:" + num2FromFile);
System.out.println("从文件中读取到的字符串是:" + strFromFile);
// 关闭输入流
br2.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码通过BufferedReader从标准输入流中读取数据,使用PrintWriter将数据写入到文件中,再通过BufferedReader从文件中读取数据并在控制台输出。在此过程中,我们使用了Java中的File类、二进制流类和标准输入输出流,希望可以帮助你理解它们的使用。
阅读全文