Java 如何在for循环中调用变量?
我似乎无法访问在我创建的3个循环中定义的randElement1、randElement2和randElement3 我的程序创建了一个字符串,其中包含从列表中选择的3个随机元素 我知道这是一个简单的问题,我确实查过了。我已经阅读了所有关于作用域的内容,但我甚至找不到解决我的特定编码问题的方法。多谢各位Java 如何在for循环中调用变量?,java,scope,Java,Scope,我似乎无法访问在我创建的3个循环中定义的randElement1、randElement2和randElement3 我的程序创建了一个字符串,其中包含从列表中选择的3个随机元素 我知道这是一个简单的问题,我确实查过了。我已经阅读了所有关于作用域的内容,但我甚至找不到解决我的特定编码问题的方法。多谢各位 import java.util.Scanner; import java.util.ArrayList; import java.util.Random; public class Main
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Random;
public class Main {
public static void main(String[] args)
{
Scanner userInput = new
Scanner(System.in);
Random rand = new Random();
//Insult Bank
String[] shakeInsults3 = new String[].{"scut", "apple-john", "baggage", "barnacle", "bladder", "boar-pig", "bugbear", "codpiece","flap-dragon", "giglet", "horn-beast","jolthead","wagtail","scut","pignut","vassal","moldwarp","lout","lewdster","measle","minnow","pumpion","ratsbane","varlet","maggot-pie","harpy"};
String[] shakeInsults1 = new String[]{"artless", "bawdy", "beslubbering","bootless", "churlish", "cockered", "clouted", "craven", "currish", "dankish", "dissembling", "droning", "errant", "fawning", "fobbing", "froward", "frothy", "gleeking", "goatish", "gozbellied", "impertinent", "infectious", "jarring", "loggerheaded", "lumpish", "mammering", "mangled", "mewling", "paunchy", "pribbling", "puking", "puny", "quailing", "rank", "reeky", "roguish", "ruttish", "saucy", "spleeny", "spongy", "surly", "tottering", "unnuzzled", "vain", "venomed", "villainous", "warped", "wayward", "weedy", "yeasty"};
String[] shakeInsults2 = new String[]{"base-court", "bat-fowling", "beef-witted", "beetle-headed", "boil-brained", "clapper-clawed", "clay-brained", "common-kissing", "crooked=pated", "dismal-dreaming", "dizzy-eyed","elf skinned", "fat=kidneyed", "fen-sucked", "fool-born", "half-faced", "hell-hated", "onion-eyed", "swag-bellied","reeling-ripe","rude-growing","ill-nurtured","guts-griping","shard-borne"};
//declaring
int intRandomWord1 = shakeInsults1.length;
int intRandomWord2 = shakeInsults2.length;
int intRandomWord3 = shakeInsults3.length;
for (int s = 0; s < 1; s++) {
for (int i = 0; i < intRandomWord1; i++) {
int randIndex1 = (int)(Math.random() * shakeInsults1.length);
String randElement1 = shakeInsults1[randIndex1];
}
for (int i = 0; i < intRandomWord2; i++) {
int randIndex2 = (int)(Math.random() * shakeInsults2.length);
String randElement2 = shakeInsults2[randIndex2];
}
for (int i = 0; i < intRandomWord3; i++) {
int randIndex3 = (int)(Math.random() * shakeInsults3.length);
String randElement3 = shakeInsults3[randIndex3];
}
}
System.out.println("Thou ", + randElement1, ", " + randElement2 + ", " + randElement3 + ".");
}
}
在for循环之外启动它们在for循环之外启动它们我想这就是您正在尝试做的,尽管我现在无法在我的机器上测试,抱歉。请注意,Random只是一个伪随机数生成器,在需要真正的随机性时不应使用。在循环内部声明的任何变量都不会存在于循环外部。这将在循环的每个过程中为randElement1、2和3生成一个新字符串
// This is so you don't get index out of bounds errors if the lists are different lengths.
// You could combine these into one line with nested Math.min calls.
// I made it two lines to be easier for you to read.
int minListLength = Math.min(shakeInsults1.length, shakeInsults2.length);
minListLength = Math.min(minListLength, shakeInsults3.length);
for (int s = 0; s < minListLength; s++) {
String randElement1 = shakeInsults1[rand.nextInt(shakeInsults1.length)];
String randElement2 = shakeInsults2[rand.nextInt(shakeInsults2.length)];
String randElement3 = shakeInsults3[rand.nextInt(shakeInsults3.length)];
System.out.println("Thou ", + randElement1, ", " + randElement2 + ", " + randElement3 + ".");
}
我想这就是你正在尝试做的,虽然我现在不能在我的机器上测试它,对不起。请注意,Random只是一个伪随机数生成器,在需要真正的随机性时不应使用。在循环内部声明的任何变量都不会存在于循环外部。这将在循环的每个过程中为randElement1、2和3生成一个新字符串
// This is so you don't get index out of bounds errors if the lists are different lengths.
// You could combine these into one line with nested Math.min calls.
// I made it two lines to be easier for you to read.
int minListLength = Math.min(shakeInsults1.length, shakeInsults2.length);
minListLength = Math.min(minListLength, shakeInsults3.length);
for (int s = 0; s < minListLength; s++) {
String randElement1 = shakeInsults1[rand.nextInt(shakeInsults1.length)];
String randElement2 = shakeInsults2[rand.nextInt(shakeInsults2.length)];
String randElement3 = shakeInsults3[rand.nextInt(shakeInsults3.length)];
System.out.println("Thou ", + randElement1, ", " + randElement2 + ", " + randElement3 + ".");
}
不能在循环内部初始化变量并在外部使用它,如果要在外部使用它,必须在要使用它的方法内部声明它 不能在循环内部初始化变量并在外部使用它,如果要在外部使用它,必须在要使用它的方法内部声明它 因为您在for循环内声明了变量,所以它们的作用域仅限于for循环内。要在for循环之外访问它们,必须在for循环之外声明它们。您可以尝试类似的方法:
int intRandomWord1 = shakeInsults1.length;
int intRandomWord2 = shakeInsults2.length;
int intRandomWord3 = shakeInsults3.length;
String randElement1;
String randElement2;
String randElement3;
for (int i = 0; i < intRandomWord1; i++) {
int randIndex1 = (int)(Math.random() * shakeInsults1.length);
randElement1 = shakeInsults1[randIndex1];
}
for (int i = 0; i < intRandomWord2; i++) {
int randIndex2 = (int)(Math.random() * shakeInsults2.length);
randElement2 = shakeInsults2[randIndex2];
}
for (int i = 0; i < intRandomWord3; i++) {
int randIndex3 = (int)(Math.random() * shakeInsults3.length);
randElement3 = shakeInsults3[randIndex3];
}
这个解决方案实际上不需要循环。要在不使用for循环的情况下对此进行编程,请尝试类似于Bakon Jarser建议的方法。因为您在for循环中声明了变量,所以它们的范围仅限于for循环中。要在for循环之外访问它们,必须在for循环之外声明它们。您可以尝试类似的方法:
int intRandomWord1 = shakeInsults1.length;
int intRandomWord2 = shakeInsults2.length;
int intRandomWord3 = shakeInsults3.length;
String randElement1;
String randElement2;
String randElement3;
for (int i = 0; i < intRandomWord1; i++) {
int randIndex1 = (int)(Math.random() * shakeInsults1.length);
randElement1 = shakeInsults1[randIndex1];
}
for (int i = 0; i < intRandomWord2; i++) {
int randIndex2 = (int)(Math.random() * shakeInsults2.length);
randElement2 = shakeInsults2[randIndex2];
}
for (int i = 0; i < intRandomWord3; i++) {
int randIndex3 = (int)(Math.random() * shakeInsults3.length);
randElement3 = shakeInsults3[randIndex3];
}
这个解决方案实际上不需要循环。若要在不使用for循环的情况下编写此程序,请尝试类似于Bakon Jarser建议的方法。因此,请尝试此方法,并让我知道它是如何运行的
int randIndex1 = 0;
String randElement1 = "";
int randIndex2 = 0;
String randElement2 = "";
int randIndex3 = 0;
String randElement3 = "";
for (int s = 0; s < 1; s++)
{
for (int i = 0; i < intRandomWord1; i++)
{
randIndex1 = (int)(Math.random() * shakeInsults1.length);
randElement1 = shakeInsults1[randIndex1];
}
for (int i = 0; i < intRandomWord2; i++)
{
randIndex2 = (int)(Math.random() * shakeInsults2.length);
randElement2 = shakeInsults2[randIndex2];
}
for (int i = 0; i < intRandomWord3; i++)
{
randIndex3 = (int)(Math.random() * shakeInsults3.length);
randElement3 = shakeInsults3[randIndex3];
}
}
我希望这有帮助。我不知道您是否试图添加任何值或返回任何内容。如果出现问题,请发表评论 试试这个,告诉我进展如何
int randIndex1 = 0;
String randElement1 = "";
int randIndex2 = 0;
String randElement2 = "";
int randIndex3 = 0;
String randElement3 = "";
for (int s = 0; s < 1; s++)
{
for (int i = 0; i < intRandomWord1; i++)
{
randIndex1 = (int)(Math.random() * shakeInsults1.length);
randElement1 = shakeInsults1[randIndex1];
}
for (int i = 0; i < intRandomWord2; i++)
{
randIndex2 = (int)(Math.random() * shakeInsults2.length);
randElement2 = shakeInsults2[randIndex2];
}
for (int i = 0; i < intRandomWord3; i++)
{
randIndex3 = (int)(Math.random() * shakeInsults3.length);
randElement3 = shakeInsults3[randIndex3];
}
}
我希望这有帮助。我不知道您是否试图添加任何值或返回任何内容。如果出现问题,请发表评论 在循环之外声明变量。当你在循环中声明它们时,一旦循环结束,它们就会超出范围。你不能调用变量。方法被调用。使用变量。您正在for循环中创建它们。必须在for循环之前创建它们,然后在其外部初始化它们。在循环外部声明变量。当你在循环中声明它们时,一旦循环结束,它们就会超出范围。你不能调用变量。方法被调用。使用变量。您正在for循环中创建它们。您必须在for循环之前创建它们,然后在它们外部初始化它们。谢谢!它起作用了。就作用域而言,Java编程与python非常不同。再次感谢!问题我似乎找不到如何在Java中使用数组函数。我所得到的只是如何使用我不想使用的Arraylist库。在哪里可以了解数组等。数组在Java中非常基本,所以它们没有函数。可以使用arrays类对数组进行一些操作,如复制和排序。ArrayList的功能非常强大,因为它有更多的功能,它有一个数组作为后盾,并且可以与Collections方法相结合来实现更多的功能。对,错。这意味着操纵。谢谢你的澄清!干杯非常感谢。它起作用了。就作用域而言,Java编程与python非常不同。再次感谢!问题我似乎找不到如何在Java中使用数组函数。我所得到的只是如何使用我不想使用的Arraylist库。在哪里可以了解数组等。数组在Java中非常基本,所以它们没有函数。可以使用arrays类对数组进行一些操作,如复制和排序。ArrayList的功能非常强大,因为它有更多的功能,它有一个数组作为后盾,并且可以与Collections方法相结合来实现更多的功能。对,错。这意味着操纵。谢谢你的澄清!干杯