Java 在使用for循环时,是否有方法使数组中的随机字符串值只调用一次?
我想制作一个程序,在其中,在for循环中输入输入,在迭代之后,数组中的随机字符串值将与它一起放置在最后的输出消息中。 我不希望字符串值重复,我希望每个值只生成一次。我该怎么做呢?(两个数组中的int值和string值也需要保持匹配,因此苹果应该总是喜欢数字1,香蕉和数字2等) 我希望输出如下所示: 亚历克斯喜欢芒果和数字3 约翰喜欢苹果和数字1Java 在使用for循环时,是否有方法使数组中的随机字符串值只调用一次?,java,arrays,for-loop,random,joptionpane,Java,Arrays,For Loop,Random,Joptionpane,我想制作一个程序,在其中,在for循环中输入输入,在迭代之后,数组中的随机字符串值将与它一起放置在最后的输出消息中。 我不希望字符串值重复,我希望每个值只生成一次。我该怎么做呢?(两个数组中的int值和string值也需要保持匹配,因此苹果应该总是喜欢数字1,香蕉和数字2等) 我希望输出如下所示: 亚历克斯喜欢芒果和数字3 约翰喜欢苹果和数字1 package example; import javax.swing.JOptionPane; import java.util.Random; pu
package example;
import javax.swing.JOptionPane;
import java.util.Random;
public class Example {
public static void main(String[] args) {
StringBuilder generator = new StringBuilder();
for (int a=1; a<4; a++){
String name = JOptionPane.showInputDialog(null, "Enter person " + a + "'s name");
Random random = new Random();
String [] fruit = {"apples", "bananas", "mangos"};
int [] number = {1, 2, 3};
int randomIndex = random.nextInt(fruit.length);
generator.append(name).append(" likes ").append(fruit[randomIndex]).append(" and the number ").append(number[randomIndex]).append("\n");
}
JOptionPane.showMessageDialog(null, generator);
}
}
简喜欢香蕉和数字2
而不是:
亚历克斯喜欢芒果和数字3
约翰喜欢芒果和数字3
简喜欢苹果和数字1
package example;
import javax.swing.JOptionPane;
import java.util.Random;
public class Example {
public static void main(String[] args) {
StringBuilder generator = new StringBuilder();
for (int a=1; a<4; a++){
String name = JOptionPane.showInputDialog(null, "Enter person " + a + "'s name");
Random random = new Random();
String [] fruit = {"apples", "bananas", "mangos"};
int [] number = {1, 2, 3};
int randomIndex = random.nextInt(fruit.length);
generator.append(name).append(" likes ").append(fruit[randomIndex]).append(" and the number ").append(number[randomIndex]).append("\n");
}
JOptionPane.showMessageDialog(null, generator);
}
}
包示例;
导入javax.swing.JOptionPane;
导入java.util.Random;
公开课范例{
公共静态void main(字符串[]args){
StringBuilder生成器=新的StringBuilder();
对于(int a=1;a,您可以在for循环之外创建水果和数字的无序列表,然后使用它们的索引获取唯一元素:
最终StringBuilder生成器=新StringBuilder();
最终列表水果=数组.asList(“苹果”、“香蕉”、“芒果”);
最终列表编号=数组.asList(1,2,3);
收藏。洗牌(水果);
收藏。洗牌(数字);
断言fruits.size()==numbers.size();
对于(int i=0;i
您需要保持某种状态,以确保不重复数字。最慢的方法是从数字数组中删除正在检索的值
如果您将数字数组转换为整数列表,并使用pop方法检索值,它应该会按预期工作。这是否回答了您的问题?虽然这可以使随机值不重复,但数组不再匹配。(芒果和数字2将匹配,而不是3)我已经按照您的建议使用了assert fruits.size()==numbers.size();
,但它仍然不起作用,有什么方法可以解决这个问题吗?